- Jan 22, 2009
-
-
Ted Kremenek authored
llvm-svn: 62805
-
Ted Kremenek authored
llvm-svn: 62804
-
Ted Kremenek authored
llvm-svn: 62803
-
Ted Kremenek authored
llvm-svn: 62802
-
Ted Kremenek authored
llvm-svn: 62801
-
Ted Kremenek authored
llvm-svn: 62800
-
Ted Kremenek authored
llvm-svn: 62799
-
Ted Kremenek authored
llvm-svn: 62798
-
Ted Kremenek authored
llvm-svn: 62796
-
Ted Kremenek authored
llvm-svn: 62795
-
Bob Wilson authored
to "C ^ 1" is only valid when C is known to be either 0 or 1. Most of the similar foldings in this function only handle "i1" types, but this one appears intentionally written to handle larger integer types. If C has an integer type larger than "i1", this needs to check if the high bits of a boolean are known to be zero. I also changed the comment to describe this folding as "C ^ 1" instead of "~C", since that is what the code does and since the latter would only be valid for "i1" types. The good news is that most LLVM targets use TargetLowering::ZeroOrOneBooleanContent so this change will not disable the optimization; the bad news is that I've been unable to come up with a testcase to demonstrate the problem. I have also removed a "FIXME" comment for folding "select C, X, 0" to "C & X", since the code looks correct to me. It could be made more aggressive by not limiting the type to "i1", but that would then require checking for TargetLowering::ZeroOrNegativeOneBooleanContent. Similar changes could be done for the other SELECT foldings, but it was decided to be not worth the trouble and complexity (see e.g., r44663). llvm-svn: 62790
-
Dan Gohman authored
Simplify x+0 to x in unsafe-fp-math mode. This avoids a bunch of redundant work in many cases, because in unsafe-fp-math mode, ISD::FADD with a constant is considered free to negate, so the DAGCombiner often negates x+0 to -0-x thinking it's free, when in reality the end result is -x, which is more expensive than x. Also, combine x*0 to 0. This fixes PR3374. llvm-svn: 62789
-
Gabor Greif authored
llvm-svn: 62788
-
Chris Lattner authored
llvm-svn: 62785
-
Ted Kremenek authored
llvm-svn: 62782
-
Ted Kremenek authored
Fix RegionStore::getLValueElement() to handle the case when the base region is not an ElementRegion (also do some cleanups of its core logic). This gets array-struct.c to work with RegionStore. llvm-svn: 62781
-
Tanya Lattner authored
llvm-svn: 62778
-
Tanya Lattner authored
llvm-svn: 62777
-
Chris Lattner authored
llvm-svn: 62776
-
Chris Lattner authored
descriptive. llvm-svn: 62775
-
-
Ted Kremenek authored
llvm-svn: 62773
-
Ted Kremenek authored
The 'misc-ps.m' test case now passes with RegionStore. One case needed to be split out into 'misc-ps-basic-store.m' and 'misc-ps-region-store.m' because the behavior was different between the two store models (RegionStore flags an additional valid bug). llvm-svn: 62772
-
Ted Kremenek authored
SymbolReaper::isLive(SymbolRef) now always returns true for SymbolRegionRvalues because these represent the symbolic values for parameters/globals upon entry to the function. These values are always ;live' because they represent constraints on the context of how the function was called. This will be useful for both summary generation but is also necessary to get RegionStore's lazy-binding of locations to symbols to work in practice with RemoveDeadBindings. llvm-svn: 62771
-
Devang Patel authored
llvm-svn: 62770
-
Ted Kremenek authored
their associated APIs. We no longer need separate SymbolData objects for fields, variables, etc. Instead, we now associated symbols with the "rvalue" of a MemRegion (i.e., the value stored at that region). Now we only have two kinds of SymbolData objects: SymbolRegionRValue and SymbolConjured. This cleanup also makes the distinction between a SymbolicRegion and a symbolic value that is a location much clearer. A SymbolicRegion represents a chunk of symbolic memory, while a symbolic location is just a "pointer" with different possible values. Without any specific knowledge, a symbolic location resolves (i.e., via a dereference) to a SymbolicRegion. In the future, when we do better alias reasoning, a symbolic location can become an alias for another location, thus merging the constraints on the referred SymbolicRegion with the other region. llvm-svn: 62769
-
Bob Wilson authored
corresponding to the "not" and "vnot" PatFrags. Use the new method in some places where it seems appropriate. llvm-svn: 62768
-
Sebastian Redl authored
Uncomment the define in Ownership.h to disable the smart pointers. Disabled, the smart pointers no longer contain a pointer to the action, and no longer have special destruction or copying semantics. They are, compiler willing, raw pointers or ActionResult equivalents. llvm-svn: 62767
-
Douglas Gregor authored
llvm-svn: 62766
-
Duncan Sands authored
by Gabor. llvm-svn: 62765
-
Duncan Sands authored
llvm-svn: 62764
-
Sanjiv Gupta authored
llvm-svn: 62763
-
Evan Cheng authored
Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead. llvm-svn: 62762
-
Chris Lattner authored
llvm-svn: 62761
-
Chris Lattner authored
llvm-svn: 62760
-
Chris Lattner authored
llvm-svn: 62758
-
Chris Lattner authored
analyses could be run without the caches properly sorted. This can fix all sorts of weirdness. Many thanks to Bill for coming up with the 'issorted' verification idea. llvm-svn: 62757
-
Tanya Lattner authored
Regenerate configure (last regen was with the wrong version). llvm-svn: 62751
-
Chris Lattner authored
Patch by Robert Zeh! llvm-svn: 62750
-
Mike Stump authored
order-only dependancies for installation directories. llvm-svn: 62746
-