- Jan 22, 2009
-
-
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
-
Bill Wendling authored
llvm-svn: 62745
-
Mike Stump authored
llvm-svn: 62744
-
Bill Wendling authored
llvm-svn: 62741
-
Daniel Dunbar authored
options (for example, to set relocation model or enable unwind table generation). llvm-svn: 62740
-
Dan Gohman authored
yet support. llvm-svn: 62739
-
Oscar Fuentes authored
On MSVC 64bits, does not put underscore before the symbol name on the /INCLUDE linker parameter. llvm-svn: 62738
-
Douglas Gregor authored
designated initializers. This implementation should cover all of the constraints in C99 6.7.8, including long, complex designations and computing the size of incomplete array types initialized with a designated initializer. Please see the new test-case and holler if you find cases where this doesn't work. There are still some wrinkles with GNU's anonymous structs and anonymous unions (it isn't clear how these should work; we'll just follow GCC's lead) and with designated initializers for the members of a union. I'll tackle those very soon. CodeGen is still nonexistent, and there's some leftover code in the parser's representation of designators that I'll also need to clean up. llvm-svn: 62737
-
Fariborz Jahanian authored
the two Next's objc runtimes. More comments. llvm-svn: 62735
-
Daniel Dunbar authored
- Although gross, this is needed currently to ensure that we produce well formed debug information (to match pace with the assertions being added to DebugInfo in LLVM). llvm-svn: 62734
-
Steve Naroff authored
llvm-svn: 62731
-