Files
llvm/test/Transforms/IndVarSimplify
Max Kazantsev 634dad1840 [SimplifyIndVars] Eliminate redundant truncs
This patch adds logic to deal with the following constructions:

  %iv = phi i64 ...
  %trunc = trunc i64 %iv to i32
  %cmp = icmp <pred> i32 %trunc, %invariant

Replacing it with
  %iv = phi i64 ...
  %cmp = icmp <pred> i64 %iv, sext/zext(%invariant)

In case if it is legal. Specifically, if `%iv` has signed comparison users, it is
required that `sext(trunc(%iv)) == %iv`, and if it has unsigned comparison
uses then we require `zext(trunc(%iv)) == %iv`. The current implementation
bails if `%trunc` has other uses than `icmp`, but in theory we can handle more
cases here (e.g. if the user of trunc is bitcast).

Differential Revision: https://reviews.llvm.org/D47928
Reviewed By: reames


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@335020 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-19 04:48:34 +00:00
..
2016-08-03 20:53:23 +00:00
2016-08-03 20:53:23 +00:00
2016-08-03 20:53:23 +00:00
2015-08-06 20:43:41 +00:00
2015-11-05 23:45:38 +00:00
2016-01-17 18:12:52 +00:00
2018-06-13 02:25:32 +00:00
2016-01-19 20:53:51 +00:00
2016-08-03 20:53:23 +00:00