- Oct 15, 2009
-
-
Jakob Stoklund Olesen authored
llvm-svn: 84193
-
Jakob Stoklund Olesen authored
llvm-svn: 84192
-
Nick Lewycky authored
llvm-svn: 84191
-
Jakob Stoklund Olesen authored
Fix pasto. llvm-svn: 84190
-
Douglas Gregor authored
llvm-svn: 84189
-
Douglas Gregor authored
instantiation redeclaration semantics for function template specializations and member functions of class template specializations. Also, record the point of instantiation for explicit-instantiated functions and static data members. llvm-svn: 84188
-
Fariborz Jahanian authored
sets of builtin operators. Currently, it is applied to '++' and '->*' operators. I need to apply it to others as well. Also, heuristics need be applied to BuiltinCandidateTypeSet::AddPointerWithMoreQualifiedTypeVariants. This is WIP. llvm-svn: 84187
-
Benjamin Kramer authored
llvm-svn: 84186
-
Douglas Gregor authored
specializations. Work in progress; there's more cleanup required to actually use the new CheckSpecializationInstantiationRedecl checker uniformly. llvm-svn: 84185
-
Daniel Dunbar authored
PIC16Section class", it breaks globals.ll. llvm-svn: 84184
-
John Thompson authored
llvm-svn: 84183
-
Douglas Gregor authored
functions/static data members of class template specializations that do not have definitions. This is the latter part of [temp.explicit]p4; the former part still needs more testing. llvm-svn: 84182
-
Douglas Gregor authored
cases where an explicit instantiation requires a definition; the remainder of these checks will come with the implementation of paragraph 4 of [temp.explicit]. llvm-svn: 84181
-
Sanjiv Gupta authored
derived from MCSection. llvm-svn: 84180
-
Sanjiv Gupta authored
llvm-svn: 84179
-
Mike Stump authored
non-virtual part of the return result adjustments for covariant thunks. WIP. llvm-svn: 84178
-
Duncan Sands authored
Pointed out by Gabor. llvm-svn: 84177
-
Edward O'Callaghan authored
llvm-svn: 84176
-
Nick Lewycky authored
improve alias results if constant, and the source pointer can't be modified. llvm-svn: 84175
-
Nick Lewycky authored
llvm-svn: 84174
-
Bob Wilson authored
llvm-svn: 84173
-
Bob Wilson authored
When ARMConstantIslandPass cannot find any good locations (i.e., "water") to place constants, it falls back to inserting unconditional branches to make a place to put them. My recent change exposed a problem in this area. We may sometimes append to the same block more than one unconditional branch. The symptoms of this are that the generated assembly has a branch to an undefined label and running llc with -debug will cause a seg fault. This happens more easily since my change to prevent CPEs from moving from lower to higher addresses as the algorithm iterates, but it could have happened before. The end of the block may be in range for various constant pool references, but the insertion point for new CPEs is not right at the end of the block -- it is at the end of the CPEs that have already been placed at the end of the block. The insertion point could be out of range. When that happens, the fallback code will always append another unconditional branch if the end of the block is in range. The fix is to only append an unconditional branch if the block does not already end with one. I also removed a check to see if the constant pool load instruction is at the end of the block, since that is redundant with checking if the end of the block is in-range. There is more to be done here, but I think this fixes the immediate problem. llvm-svn: 84172
-
Chris Lattner authored
don't bother every time going around the main worklist. This speeds up a release-asserts opt -std-compile-opts on 403.gcc by about 4% (1.5s). It seems to speed up the most expensive instances of instcombine by ~10%. llvm-svn: 84171
-
Chris Lattner authored
instruction (which disqualifies stores, unreachable, etc) and at least the first operand is a constant. This filters out a lot of obvious cases that can't be folded. Also, switch the IRBuilder to a TargetFolder, which tries harder. llvm-svn: 84170
-
John McCall authored
llvm-svn: 84169
-
John McCall authored
most of the unsafe boilerplate out of TypeLoc. Create a QualifiedLoc class to represent the idea that we *might* start representing source locations of qualifiers. Dealing with qualifiers explicitly like this also lets us efficiently ignore them in all the concrete cases. This should make it obvious and easy to add new TypeLoc subclasses. llvm-svn: 84168
-
Mike Stump authored
llvm-svn: 84167
-
Mike Stump authored
Track path information completely to ensure we get all the overrides. WIP. llvm-svn: 84166
-
Ted Kremenek authored
RegionStoreManager::Retrieve() that was intended to handle conflated uses of pointers as integers. It turns out this isn't needed, and resulted in inconsistent behavior when creating symbolic values on the following test case in 'tests/Analysis/misc-ps.m': typedef struct _BStruct { void *grue; } BStruct; void testB_aux(void *ptr); void testB(BStruct *b) { { int *__gruep__ = ((int *)&((b)->grue)); int __gruev__ = *__gruep__; testB_aux(__gruep__); } { int *__gruep__ = ((int *)&((b)->grue)); int __gruev__ = *__gruep__; if (~0 != __gruev__) {} } } When the code was analyzed with '-arch x86_64', the value assigned to '__gruev__' be would be a symbolic integer, but for '-arch i386' the value assigned to '__gruev__' would be a symbolic region (a blob of memory). With this change the value created is always a symbolic integer. Since the code being removed was added to support analysis of code calling OSAtomicCompareAndSwapXXX(), I also modified 'test/Analysis/NSString.m' to analyze the code in both '-arch i386' and '-arch x86_64', and also added some complementary test cases to test the presence of leaks when using OSAtomicCompareAndSwap32Barrier()/OSAtomicCompareAndSwap64Barrier() instead of just their absence. This code change reveals that previously both RegionStore and BasicStore were handling these cases wrong, and would never cause the analyzer to emit a leak in these cases (false negatives). Now RegionStore gets it right, but BasicStore still gets it wrong (and hence it has been disabled temporarily for this test case). llvm-svn: 84163
-
Anders Carlsson authored
struct A { }; struct B : A { }; void f() { const A& a = B(); } correctly. (This now does the offset conversion if necessary and calls the destructor when a goes out of scope). llvm-svn: 84162
-
Anders Carlsson authored
llvm-svn: 84161
-
John Thompson authored
llvm-svn: 84160
-
Nick Lewycky authored
only dereference the element they point to directly with no pointer arithmetic. llvm-svn: 84159
-
Dan Gohman authored
header is just the entry block to the loop, and it needn't be at the top of the loop in the code layout. Remove the code that suppressed loop alignment for outer loops, so that outer loops are aligned. llvm-svn: 84158
-
Ted Kremenek authored
llvm-svn: 84157
-
Douglas Gregor authored
instantiations, since the requirements are too different from those for template specializations. Simplify it slightly. llvm-svn: 84156
-
Douglas Gregor authored
focusing on the scope- and qualifier-related semantic requirements in C++ [temp.explicit]p2. llvm-svn: 84154
-
Evan Cheng authored
When LiveVariables is adding implicit-def to model "partial dead", add the earlyclobber marker if the superreg def has it. llvm-svn: 84153
-
Evan Cheng authored
llvm-svn: 84152
-
Eric Christopher authored
llvm-svn: 84150
-