Commit Graph

2 Commits

Author SHA1 Message Date
Alessandro Di Federico 5671806fe0 Anticipate specializations in Reachingdefinitions
This commit fixes a bug preventing clang from compiling the code
correctly.
2016-09-17 15:33:55 +02:00
Alessandro Di Federico 475ed2390e Introduce ConditionalReachingDefinitionsPass
Three new passes have been introduced:

* `ReachingDefinitionsPass`: classical reaching definitions analysis
  working on load/stores with the main difference that a load without a
  definition behaves similarly to a definition and that we ignore
  certain basic blocks (i.e., the dispatcher).
* `ConditionNumberingPass`: goes through all the branch instructions to
  check if some of them use an equivalent condition, this is
  particularly useful to understand that consecutive ARM instructions
  using the same predicate are working on the same condition.
* `ConditionalReachingDefinitionsPass`: identical to
  `ReachingDefinitionsPass` but uses information from
  `ConditionNumberingPass` to stop certain definitions from reaching
  certain loads.

The first and the last analyses have `Reached*` variants which expose
information from the point of view of the definintion instead of from
the point of view of the load.
2016-09-17 15:33:53 +02:00