aboutsummaryrefslogtreecommitdiffstats
path: root/test/regression/ifconv.c
Commit message (Collapse)AuthorAgeFilesLines
* Perform constant propagation and strength reduction on conditional movesXavier Leroy2019-06-171-0/+20
| | | | | A conditional move whose condition is statically known becomes a regular move. Otherwise, the condition can sometimes be simplified by strength reduction.
* If-conversion optimizationXavier Leroy2019-06-061-0/+129
Extends the instruction selection pass with an if-conversion optimization: some if/then/else statements are converted into "select" operations, which in turn can be compiled down to branchless instruction sequences if the target architecture supports them. The statements that are converted are of the form if (cond) { x = a1; } else { x = a2; } if (cond) { x = a1; } if (cond) { /*skip*/; } else { x = a2; } where a1, a2 are "safe" expressions, containing no operations that can fail at run-time, such as memory loads or integer divisions. A heuristic in backend/Selectionaux.ml controls when the optimization occurs, depending on command-line flags and the complexity of the "then" and "else" branches.