- Jul 23, 2003
-
-
Chris Lattner authored
one function of the same name llvm-svn: 7274
-
Chris Lattner authored
llvm-svn: 7273
-
Chris Lattner authored
llvm-svn: 7272
-
Chris Lattner authored
- InstCombine: (X | C) & C --> C - InstCombine: (X | C1) & C2 --> (X | (C1&C2)) & C2 llvm-svn: 7269
-
Brian Gaeke authored
Stop passing ostreams around: we already have one perfectly good ostream and we can all share it. Stop stashing a pointer to TargetData in the Pass object, because that will lead to a crash if there are no functions in the module (ouch!) Instead, use addRequired() and getAnalysis(), like we always should have done. Move the check for ConstantExpr up before the check for isPrimitiveType, because we need to be able to catch e.g. ubyte (cast bool false to ubyte), whose type is primitive but which is nevertheless a ConstantExpr, by calling our specialized handler instead of the AsmWriter. This would result in assembler errors when we would try to output something like ".byte (cast bool false to ubyte)". GC some unused variable declarations. llvm-svn: 7265
-
Chris Lattner authored
IC: (X ^ C1) | C2 --> (X | C2) ^ (C1&~C2) We are now guaranteed that all 'or's will be inside of 'and's, and all 'and's will be inside of 'xor's, if the second operands are constants. llvm-svn: 7264
-
Chris Lattner authored
Minor code cleanup llvm-svn: 7262
-
Chris Lattner authored
llvm-svn: 7260
-
Chris Lattner authored
IC: (X | 8) == 4 --> false llvm-svn: 7257
-
Chris Lattner authored
llvm-svn: 7254
-
Chris Lattner authored
llvm-svn: 7253
-
Chris Lattner authored
whether the constant is signed or unsigned, then casting llvm-svn: 7252
-
Chris Lattner authored
llvm-svn: 7250
-
Chris Lattner authored
llvm-svn: 7249
-
Chris Lattner authored
llvm-svn: 7248
-
Chris Lattner authored
llvm-svn: 7247
-
Chris Lattner authored
llvm-svn: 7246
-
Chris Lattner authored
llvm-svn: 7245
-
Chris Lattner authored
llvm-svn: 7243
-
- Jul 22, 2003
-
-
Chris Lattner authored
- InstCombine (cast (and X, (1 << size(X)-1)) to bool) ==> x < 0 llvm-svn: 7241
-
Vikram S. Adve authored
llvm-svn: 7227
-
- Jul 21, 2003
-
-
Chris Lattner authored
llvm-svn: 7217
-
John Criswell authored
a load of the global variable with the variable's constant value. llvm-svn: 7216
-
Misha Brukman authored
llvm-svn: 7209
-
- Jul 20, 2003
-
-
Anand Shukla authored
llvm-svn: 7208
-
- Jul 18, 2003
-
-
Anand Shukla authored
llvm-svn: 7206
-
Brian Gaeke authored
Avoid a fall-through in the (stubby) treatment of the longjmp intrinsic call which causes llc & lli to core-dump. Add a sort-of treatment of cast double to ulong. I am not really sure what a user should expect to see upon casting a negative FP value to unsigned long long. But with what is given here, I was able to write a program that could cast -123.456 to ulong and back and get -123.0, which seems like a step in the right direction. GCC seems to give you 0. I don't know if I'd consider that useful. These cases were coming up in GNU coreutils-5.0. llvm-svn: 7205
-
Misha Brukman authored
to pass to dlsym() -- Linux/x86 wants 0 while Sparc/Solaris wants RTLD_SELF, which is not zero. Thanks to Chris for the suggestion. llvm-svn: 7204
-
Anand Shukla authored
llvm-svn: 7201
-
- Jul 17, 2003
-
-
Brian Gaeke authored
try to load or store through a bool*. llvm-svn: 7195
-
Brian Gaeke authored
llvm-svn: 7194
-
John Criswell authored
an external constant. Since external constants don't have initializers, we were failing on an assert() call in llvm/GlobalVariable.h. llvm-svn: 7193
-
- Jul 16, 2003
-
-
Vikram S. Adve authored
after all callees are inlined into the current graph. NOTE: There's also a major bug fix for the BU pass in DataStructure.cpp, which ensures that resolvable indirect calls are not moved out to the globals graph, so that they are eventually inlined (if possible). llvm-svn: 7189
-
Vikram S. Adve authored
after all callers are inlined into the current graph. (2) Optimize the way a graph is inlined into its callees in the TD phase: (a) Use DSGraph::cloneReachableSubgraph to clone only a subgraph at each call site, for faster inlining. (b) Clone separately for the same callee at different call sites, since only the reachable subgraph is being cloned, not the entire caller graph. llvm-svn: 7188
-
Vikram S. Adve authored
and (2) faster inlining by cloning only reachable nodes. In particular: (1) Added DSGraph::cloneReachableSubgraph and DSGraph::cloneReachableNodes to clone the subgraph reachable from a set of root nodes, into the current graph, merging the global nodes into thos in the current graph. The TD pass now uses this for faster inlining, and so does the next function. (2) Added DSGraph::updateFromGlobalGraph() to rematerialize nodes from the globals graph into the current graph in both BU and TD passes. (3) `I' flags are removed from all nodes in the globals graph, because they are difficult to maintain correctly and are not needed anyway. (4) Aux. function calls are only removed to the globals graph if they will never be resovled. (This is what fixed gap.) The immediate reason is that if we took these out of a function (and moved them to the globals graph) we would need to rematerialize these nodes into the function graph for every function in the BU pass. The longer term problem is that we would need to find a way to remove them from the globals graph iff they have been resolved on all paths through the call graph. llvm-svn: 7187
-
Vikram S. Adve authored
isUnresolvableFunc() (I thought I needed this externally. I don't, but it's still nicer this way.) llvm-svn: 7186
-
Misha Brukman authored
now works in instructions which require a 2-bit or 3-bit INTcc code. Incidentally, that means that the representation of INTcc registers is now the same in both integer and FP instructions. Thus, code became much simpler and cleaner. llvm-svn: 7185
-
Misha Brukman authored
no change in functionality. llvm-svn: 7184
-
- Jul 15, 2003
-
-
Misha Brukman authored
llvm-svn: 7182
-
Misha Brukman authored
llvm-svn: 7181
-