- Apr 23, 2010
-
-
Chris Lattner authored
PR6888 with: $ llvm-as t.ll llvm-as: t.ll:2:29: error: expected metadata or 'align' store <3 x i32> %x, i32 1, i32 1>, <3 x i32>* %p ^ instead of: $ llvm-as t.ll llvm-as: llvm-svn: 102154
-
Chris Lattner authored
llvm-svn: 102153
-
Douglas Gregor authored
llvm-svn: 102147
-
Chris Lattner authored
that appear in the SCC as a result of inlining as candidates for inlining. Change this so that it *does* consider call sites that change from being indirect to being direct as a result of inlining. This allows it to completely "devirtualize" the testcase. llvm-svn: 102146
-
Douglas Gregor authored
llvm-svn: 102145
-
Jim Grosbach authored
extraction. This fixes PR5998. llvm-svn: 102144
-
Douglas Gregor authored
aren't and never were used. There's a gap in the bit pattern for IDNS now, but I'm sure *someone* will fill it. llvm-svn: 102143
-
Dan Gohman authored
the definition of the nsw and nuw flags to make use of it. nsw was introduced to help optimizers answer yes to the following: // Can we change i from i32 to i64 to eliminate the cast inside the loop? for (int i = 0; i < n; ++i) A[i] *= 0.1; // Can we assume that this loop will eventually terminate? for (int i = 0; i <= n; ++i) A[i] *= 0.1; In its current form, it isn't truly sufficient for either. In the first case, if the increment overflows, it'll still have some valid i32 value; sign-extending it will produce a value which is 33 homogeneous sign bits trailed by 31 independent undef bits. If i is promoted to i64, it won't have those same values when it reaches that point. (The compiler could recover here by reasoning about how i is used by the load, but that's a lot more complicated and isn't always possible.) In the second case, there is no value for i which will be greater than n, so having the increment return undef on overflow doesn't help. Trap values are a formalization of some existing concepts that we have about LLVM IR, and give the optimizers a better basis for answering yes to both questions above. llvm-svn: 102140
-
Douglas Gregor authored
statement, i.e., for (element in collection) { // do something } llvm-svn: 102138
-
Chris Lattner authored
arguments are handled with a new InlineFunctionInfo class. This makes it easier to extend InlineFunction to return more info in the future. llvm-svn: 102137
-
Devang Patel authored
llvm-svn: 102135
-
Douglas Gregor authored
llvm-svn: 102134
-
- Apr 22, 2010
-
-
Douglas Gregor authored
llvm-svn: 102133
-
Chris Lattner authored
llvm-svn: 102132
-
Chris Lattner authored
define void @f3(void (i8*)* %__f) ssp { entry: call void %__f(i8* undef) unreachable } define void @f4(i8* %this) ssp align 2 { entry: call void @f3(void (i8*)* @f2) ssp ret void } The inliner is turning the indirect call to %__f into a direct call to F2. Make the call graph more precise when this happens. The inliner doesn't revisit call sites introduced by inlining, so there isn't an easy way to test for this, but a more precise callgraph is a good thing. llvm-svn: 102131
-
Fariborz Jahanian authored
in pch. llvm-svn: 102130
-
Devang Patel authored
llvm-svn: 102129
-
Dan Gohman authored
into SelectionDAGBuilder itself. llvm-svn: 102128
-
Devang Patel authored
llvm-svn: 102127
-
Dan Gohman authored
llvm-svn: 102126
-
Nick Lewycky authored
llvm-svn: 102125
-
Dan Gohman authored
llvm-svn: 102124
-
Dan Gohman authored
and into SelectionDAGBuilder and FastISel. llvm-svn: 102123
-
Douglas Gregor authored
llvm-svn: 102121
-
Chris Lattner authored
Fix RefreshCallGraph to use CGN->replaceCallEdge instead of hand rolling its own loop. replaceCallEdge properly maintains the reference counts of the nodes, fixing a crash exposed by the iterative callgraph stuff. llvm-svn: 102120
-
Chris Lattner authored
llvm-svn: 102119
-
Fariborz Jahanian authored
llvm-svn: 102112
-
Evan Cheng authored
- Some code refactoring. llvm-svn: 102111
-
Dan Gohman authored
llvm-svn: 102110
-
Dan Gohman authored
FunctionLoweringInfo, as it isn't SelectionDAG-specific. This isn't completely natural, as PHI node state is not per-function but rather per-basic-block, however there's currently no other convenient per-basic-block state to group it with. llvm-svn: 102109
-
John McCall authored
address of overloaded function, instead of assuming that a nested name specifier was used. A nested name specifier is not required for static functions. Fixes PR6886. llvm-svn: 102107
-
Devang Patel authored
llvm-svn: 102106
-
Devang Patel authored
llvm-svn: 102104
-
Jim Grosbach authored
llvm-svn: 102103
-
Devang Patel authored
llvm-svn: 102102
-
Jim Grosbach authored
llvm-svn: 102101
-
Chris Lattner authored
llvm-svn: 102100
-
Chris Lattner authored
llvm-svn: 102098
-
Chris Lattner authored
from Wesley Peck! llvm-svn: 102096
-
Chris Lattner authored
llvm-svn: 102095
-