- Aug 01, 2009
-
-
Benjamin Kramer authored
llvm-svn: 77790
-
Chris Lattner authored
llvm-svn: 77789
-
Chris Lattner authored
llvm-svn: 77788
-
Chris Lattner authored
llvm-svn: 77787
-
Eli Friedman authored
llvm-svn: 77786
-
Eli Friedman authored
myself because I'm getting tired of seeing the red buildbots, which have been red since 5:30PM PDT last night. Proposed supplement to developer policy: committers should make sure to be around to watch for buildbot failures after committing. llvm-svn: 77785
-
Daniel Dunbar authored
- Off by default, you can test it with the --no-sh argument. - For me it works for all but 3 tests, but there a number of FIXMEs and QOI issues: o Redirection isn't completely accurate -- in practice it can't portably be, but I would like to error out if someone writes something which isn't going to work. This is the source of the 3 test failures. o Some pipe configurations have the potential to deadlock. o It is significantly slower when multithreaded. I believe this is due to locking happening under the hood, there is probably some kind of solution but I haven't investigated yet. o Log output is ugly. llvm-svn: 77784
-
Daniel Dunbar authored
- Empty arguments weren't handled correctly. - Escapes outside quoted strings weren't handled. llvm-svn: 77783
-
Ted Kremenek authored
made to RegionStore (and related classes) in order to handle some analyzer failures involving casts and manipulation of symbolic memory. The root of the change is in StoreManager::CastRegion(). Instead of using ad hoc heuristics to decide when to layer an ElementRegion on a casted MemRegion, we now always layer an ElementRegion when the cast type is different than the original type of the region. This carries the current cast information associated with a region around without resorting to the error prone recording of "casted types" in GRState. Along with this new policy of layering ElementRegions, I added a new algorithm to strip away existing ElementRegions when they simply represented casts of a base memory object. This algorithm computes the raw "byte offset" that an ElementRegion represents from the base region, and allows the new ElementRegion to be based off that offset. The added benefit is that this naturally handles a series of casts of a MemRegion without building up a set of redundant ElementRegions (thus canonicalizing the region view). Other related changes that cascaded from this one (as tests were failing in RegionStore): - Revamped RegionStoreManager::InvalidateRegion() to completely remove all bindings and default values from a region and all subregions. Now invalidated fields are not bound directly to new symbolic values; instead the base region has a "default" symbol value from which "derived symbols" can be created. The main advantage of this approach is that it allows us to invalidate a region hierarchy and then lazily instantiate new values no matter how deep the hierarchy went (i.e., regardless of the number of field accesses, e.g. x->f->y->z->...). The previous approach did not do this. - Slightly reworked RegionStoreManager::RemoveDeadBindings() to also incorporate live symbols and live regions that do not have direct bindings but also have "default values" used for lazy instantiation. The changes to 'InvalidateRegion' revealed that these were necessary in order to achieve lazy instantiation of values in the region store with those bindings being removed too early. - The changes to InvalidateRegion() and RemoveDeadBindings() revealed a serious bug in 'getSubRegionMap()' where not all region -> subregion relationships involved in actually bindings (explicit and implicit) were being recorded. This has been fixed by using a worklist algorithm to iteratively fill in the region map. - Added special support to RegionStoreManager::Bind()/Retrieve() to handle OSAtomicCompareAndSwap in light of the new 'CastRegion' changes and the layering of ElementRegions. - Fixed a bug in SymbolReaper::isLive() where derived symbols were not being marked live if the symbol they were derived from was also live. This fix was critical for getting lazy instantiation in RegionStore to work. - Tidied up the implementation of ValueManager::getXXXSymbolVal() methods to use SymbolManager::canSymbolicate() to decide whether or not a symbol should be symbolicated. - 'test/Analysis/misc-ps-xfail.m' now passes; that test case has been moved to 'test/Analysis/misc-ps.m'. - Tweaked some pretty-printing of MemRegions, and implemented 'ElementRegion::getRawOffset()' for use with the CastRegion changes. llvm-svn: 77782
-
Evan Cheng authored
llvm-svn: 77781
-
Daniel Dunbar authored
llvm-svn: 77780
-
Ted Kremenek authored
Temporarily disable out-of-bounds checking. The current checking logic will not work quite right with the changes I'm about to commit. llvm-svn: 77779
-
Daniel Dunbar authored
- Doug, please check. llvm-svn: 77778
-
Daniel Dunbar authored
- '\\\\' inside a "..." string becomes '\\'. - The '<' token wasn't being recognized. llvm-svn: 77777
-
Daniel Dunbar authored
environment. llvm-svn: 77776
-
Dan Gohman authored
that it released its allocated memory. llvm-svn: 77775
-
Dan Gohman authored
llvm-svn: 77774
-
Daniel Dunbar authored
why dynamic binding sucks. llvm-svn: 77773
-
Daniel Dunbar authored
llvm-svn: 77772
-
Dan Gohman authored
llvm-svn: 77769
-
Dan Gohman authored
llvm-svn: 77768
-
Daniel Dunbar authored
llvm-svn: 77767
-
Daniel Dunbar authored
llvm-svn: 77766
-
Daniel Dunbar authored
llvm-svn: 77765
-
Evan Cheng authored
llvm-svn: 77764
-
Anders Carlsson authored
llvm-svn: 77763
-
Ted Kremenek authored
llvm-svn: 77762
-
Daniel Dunbar authored
llvm-svn: 77761
-
Dan Gohman authored
as it is now a MachineFunctionPass, and MachineFunctionPass now handles this. llvm-svn: 77760
-
Dan Gohman authored
MachineLoopInfo. llc now runs MachineLoopInfo and MachineDominatorTree only twice, instead of three times. llvm-svn: 77759
-
Dan Gohman authored
be more careful about the return value of runOnMachineFunction. llvm-svn: 77758
-
Dan Gohman authored
llvm-svn: 77757
-
Evan Cheng authored
instructions for calls since BL and BLX are always 32-bit long and BX is always 16-bit long. Also, we should be using BLX to call external function stubs. llvm-svn: 77756
-
Dan Gohman authored
llvm-svn: 77755
-
Dan Gohman authored
llvm-svn: 77754
-
Dan Gohman authored
to the MachineFunction. llvm-svn: 77753
-
Dan Gohman authored
llvm-svn: 77752
-
Mike Stump authored
llvm-svn: 77751
-
Daniel Dunbar authored
llvm-svn: 77750
-
Daniel Dunbar authored
llvm-svn: 77749
-