-aggressive-instcombine: Combine Expression Patterns

Description

-aggressive-instcombine 是一个比 -instcombine 更 aggressive 的 transformation pass。 -aggressive-instcombine 也不修改 program control-flow。 除了 arithmetic 和 bitwise 的 combinmation 外(这些都是O(1)复杂度),他还能 combine 更复杂的 expression patterns。 比如,一个 i8 的数字和一个整数相加,这里其实使用更简单的 i8 格式的 variable 就行了,所以这里 -aggressive-instcombine 会自动添加 TruncInst instruction 去 reduce the width of expressions。

Code Example

其实就是可以识别 expression pattern (e.g. bit truncate) 的更复杂的 -instcombine,故原理相似,可以查看前文,这里便不再赘述。