- Jul 13, 2010
-
-
Duncan Sands authored
by a return that returns a constant, while elsewhere in the function another return instruction returns a different constant. This is a special case of accumulator recursion, so just generalize the existing logic a bit. llvm-svn: 108241
-
- Jul 12, 2010
-
-
Benjamin Kramer authored
llvm-svn: 108153
-
Benjamin Kramer authored
llvm-svn: 108152
-
Gabor Greif authored
llvm-svn: 108150
-
Benjamin Kramer authored
llvm-svn: 108148
-
Gabor Greif authored
llvm-svn: 108147
-
Gabor Greif authored
llvm-svn: 108146
-
Gabor Greif authored
llvm-svn: 108145
-
Gabor Greif authored
llvm-svn: 108144
-
Gabor Greif authored
llvm-svn: 108143
-
Gabor Greif authored
llvm-svn: 108142
-
Benjamin Kramer authored
llvm-svn: 108141
-
Benjamin Kramer authored
llvm-svn: 108140
-
Benjamin Kramer authored
llvm-svn: 108139
-
Gabor Greif authored
llvm-svn: 108138
-
Gabor Greif authored
llvm-svn: 108137
-
Benjamin Kramer authored
instcombine: fold (x & y) | (~x & z) and (x & y) ^ (~x & z) into ((y ^ z) & x) ^ z which is one instruction shorter. (PR6773) before: %and = and i32 %y, %x %neg = xor i32 %x, -1 %and4 = and i32 %z, %neg %xor = xor i32 %and4, %and after: %xor1 = xor i32 %z, %y %and2 = and i32 %xor1, %x %xor = xor i32 %and2, %z llvm-svn: 108136
-
Gabor Greif authored
llvm-svn: 108135
-
Gabor Greif authored
llvm-svn: 108134
-
Gabor Greif authored
llvm-svn: 108133
-
Gabor Greif authored
llvm-svn: 108132
-
Gabor Greif authored
llvm-svn: 108131
-
Duncan Sands authored
llvm-svn: 108130
-
Chris Lattner authored
by Hans Vandierendonck from PR7605 llvm-svn: 108116
-
Chris Lattner authored
the LHS and RHS of an and/or instruction, don't multiply add known predecessor values. This fixes the crash on testcase from PR7498 llvm-svn: 108114
-
- Jul 10, 2010
-
-
Duncan Sands authored
operation, but the way it's implemented requires the operation to also be commutative. So add a check for commutativity (and tweak the corresponding comments). This makes no difference in practice since every associative LLVM instruction is also commutative! Here's an example to show the need for commutativity: the accum_recursion.ll testcase calculates the factorial function. Before the transformation the result of a call is ((((1*1)*2)*3)...)*x while afterwards it is (((1*x)*(x-1))...*2)*1 which clearly requires both associativity and commutativity of * to be equal to the original. llvm-svn: 108056
-
- Jul 09, 2010
-
-
Gabor Greif authored
llvm-svn: 107990
-
Gabor Greif authored
llvm-svn: 107984
-
Gabor Greif authored
llvm-svn: 107983
-
Gabor Greif authored
llvm-svn: 107981
-
Gabor Greif authored
llvm-svn: 107976
-
Gabor Greif authored
llvm-svn: 107975
-
Gabor Greif authored
llvm-svn: 107974
-
Gabor Greif authored
llvm-svn: 107972
-
Gabor Greif authored
llvm-svn: 107971
-
Gabor Greif authored
llvm-svn: 107969
-
Gabor Greif authored
llvm-svn: 107968
-
Gabor Greif authored
llvm-svn: 107966
-
Gabor Greif authored
llvm-svn: 107965
-
Gabor Greif authored
llvm-svn: 107962
-