- Oct 13, 2009
-
-
Chris Lattner authored
which is a common idiom to improve PIC'ness of code using the addr of label extension. This implementation is a gross hack, but the only other alternative would be to teach evalutate about this horrid combination. While GCC allows things like "&&foo - &&bar + 1", people don't use this in practice. This implements PR5131. llvm-svn: 83957
-
Chris Lattner authored
1. CGF now has fewer bytes of state (one pointer instead of a vector). 2. The generated code is determinstic, instead of getting labels in 'map order' based on pointer addresses. 3. Clang now emits one 'indirect goto switch' for each function, instead of one for each indirect goto. This fixes an M*N = N^2 IR size issue when there are lots of address-taken labels and lots of indirect gotos. 4. This also makes the default cause do something useful, reducing the size of the jump table needed (by one). llvm-svn: 83952
-
Chris Lattner authored
for a null pointer. In other words, "&&foo != NULL" will always work out to true. llvm-svn: 83948
-
Chris Lattner authored
more places in clang codegen now. llvm-svn: 83947
-
Chris Lattner authored
about the reason, rdar://7186119. llvm-svn: 83940
-
Chris Lattner authored
previously we only recognized it on inputs. llvm-svn: 83939
-
Zhongxing Xu authored
llvm-svn: 83936
-
Zhongxing Xu authored
llvm-svn: 83934
-
Devang Patel authored
llvm-svn: 83928
-
Douglas Gregor authored
that the scope in which it is being declared is complete. Also, when instantiating a member class template's ClassTemplateDecl, be sure to delay type creation so that the resulting type is dependent. Ick. llvm-svn: 83923
-
Devang Patel authored
llvm-svn: 83913
-
Devang Patel authored
llvm-svn: 83912
-
Douglas Gregor authored
that are declarations (rather than definitions). Also, be sure to set the access specifiers properly when instantiating the declarations of member function templates. llvm-svn: 83911
-
John McCall authored
llvm-svn: 83910
-
- Oct 12, 2009
-
-
John McCall authored
conditions. Add a fixit to insert the parentheses. Also fix a very minor possible memory leak in 'for' conditions. Fixes PR 4876 and rdar://problem/7289172 llvm-svn: 83907
-
Anders Carlsson authored
llvm-svn: 83900
-
Ted Kremenek authored
Use a BumpPtrAllocator to allocate all aspects of CFG, including CFGBlocks, successor and predecessor vectors, etc. Speedup: when doing 'clang-cc -analyze -dump-cfg' (without actual printing, just CFG building) on the amalgamated SQLite source (all of SQLite in one source file), runtime reduced by 9%. This fixes: <rdar://problem/7250745> llvm-svn: 83899
-
Mike Stump authored
llvm-svn: 83898
-
Douglas Gregor authored
instantiation has already been required. To do so, keep track of the point of instantiation for anything that can be instantiated. llvm-svn: 83890
-
Fariborz Jahanian authored
wip - To prune excessive reporting. llvm-svn: 83889
-
Anders Carlsson authored
llvm-svn: 83886
-
Anders Carlsson authored
llvm-svn: 83883
-
Anders Carlsson authored
llvm-svn: 83882
-
Anders Carlsson authored
Factor out devirtualization checking into a separate function and make it handle references correctly. llvm-svn: 83880
-
Fariborz Jahanian authored
canonical conversion types. llvm-svn: 83869
-
Fariborz Jahanian authored
user-defined type conversions, issue list of ambiguites in addition to the diagnostic. So, clang now issues the following: b.cpp:19:19: error: left hand operand to ->* must be a pointer to class compatible with the right hand operand, but is 'struct C1' int i = c1->*pmf; ~~^ b.cpp:19:19: note: because of ambiguity in conversion of 'struct C1' to 'struct E *' b.cpp:5:5: note: candidate function operator E*(); ^ b.cpp:11:5: note: candidate function operator E*(); ^ llvm-svn: 83862
-
Edward O'Callaghan authored
llvm-svn: 83847
-
Anders Carlsson authored
llvm-svn: 83816
-
Benjamin Kramer authored
llvm-svn: 83808
-
Benjamin Kramer authored
llvm-svn: 83800
-
Anders Carlsson authored
llvm-svn: 83798
-
- Oct 11, 2009
-
-
Anders Carlsson authored
llvm-svn: 83793
-
Sebastian Redl authored
llvm-svn: 83766
-
Sebastian Redl authored
Along the way, use RequireCompleteType when testing exception spec types. Separate all the ugly spec stuff into its own file. llvm-svn: 83764
-
Zhongxing Xu authored
default binding for regions. This allows us to simply a lot of code. A further simplification could be done is that many methods of regionstore can only work on Store instead of GRState. llvm-svn: 83762
-
- Oct 10, 2009
-
-
Anders Carlsson authored
llvm-svn: 83732
-
Fariborz Jahanian authored
variable inside the block. llvm-svn: 83729
-
Sebastian Redl authored
Implement the core checking for compatible exception specifications in assignment and initialization. The exception specification of the assignee must be the same or a subset of the target. In addition, exception specifications on arguments and return types must be equivalent, but this is not implemented yet. This currently produces two diagnostics for every invalid assignment/initialization, due to the diagnostic produced outside PerformImplicitConversion, e.g. in CheckSingleInitializer. I don't know how to suppress this; in any case I think it is the wrong place for a diagnostic, since there are other diagnostics produced inside the function. So I'm leaving it as it is for the moment. llvm-svn: 83710
-
John McCall authored
Split the various ambiguous result enumerators into their own enum. Tests for most of C++ [namespace.qual]. llvm-svn: 83700
-
Anders Carlsson authored
llvm-svn: 83694
-