- Jan 23, 2009
-
-
Chris Lattner authored
compatibility with VC++. Patch by Max Burke! llvm-svn: 62813
-
Douglas Gregor authored
initializers, so that we are within the appropriate subobject after we've processed a multi-designator designation. We're matching GCC and EDG's behavior on all examples I've found thus far. *Huge* thanks to Eli Friedman for pointing out my fundamental misunderstanding of "current object" in the C99 spec. llvm-svn: 62812
-
Daniel Dunbar authored
parent wasn't expecting it. llvm-svn: 62811
-
Steve Naroff authored
llvm-svn: 62808
-
Steve Naroff authored
Handful of fixes to the VC project files. llvm-svn: 62807
-
Fariborz Jahanian authored
for the new meta-data. llvm-svn: 62806
-
- 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
-