- Jul 11, 2011
-
-
Jay Foad authored
llvm-svn: 134888
-
- Jul 10, 2011
-
-
John McCall authored
llvm-svn: 134880
-
Argyrios Kyrtzidis authored
llvm-svn: 134876
-
Argyrios Kyrtzidis authored
llvm-svn: 134875
-
Chris Lattner authored
is called whenever a tag type is completed. We previously used that as the sign to layout the codegen representation for the tag type, which worked but meant that we laid out *every* completed type, whether it was used or not. Now we just lay out the type if we've already seen it somehow else. This means that we lay out types we've used but haven't seen a body for, but we don't lay out tons of stuff that noone cares about. llvm-svn: 134866
-
Chris Lattner authored
us to revert the other half of r134860. Now things are back to a relatively tidy state. llvm-svn: 134865
-
Chris Lattner authored
llvm-svn: 134864
-
Chris Lattner authored
caused us to skip layout out a function accurately. If so, flush the type cache for both the function and struct case to ensure that any pointers to the functions get recomputed. This is overconservative, but with this patch clang can build itself again. llvm-svn: 134863
-
Chris Lattner authored
type, even when in the struct case. This was one root issue that was causing type mismatches throughout the compiler. llvm-svn: 134862
-
Chris Lattner authored
conservative when converting a functiontype to IR when in a "pointer within a struct" context. This has the unfortunate sideeffect of compiling all function pointers inside of structs into "{}*" which, though correct, is ugly. This has the positive side effect of being correct, and it is pretty straight-forward to improve on this. llvm-svn: 134861
-
Chris Lattner authored
do an explicit bitcast to whatever ConvertType produces. This will go with the next patch. llvm-svn: 134860
-
Chris Lattner authored
llvm-svn: 134855
-
Chris Lattner authored
it is a predicate, not an action. Change the return type to be a bool, not the incomplete member. Enhace it to detect the recursive compilation case, allowing us to compile Eli's testcase on llvmdev: struct T { struct T (*p)(void); } t; into: %struct.T = type { {}* } @t = common global %struct.T zeroinitializer, align 8 llvm-svn: 134853
-
- Jul 09, 2011
-
-
Argyrios Kyrtzidis authored
This is a new mode of migration, where we avoid modifying the original files but we emit temporary files instead. <path> will be used to keep migration process metadata. Currently the temporary files that are produced are put in the system's temp directory but we can put them in the <path> if is necessary. Also introduce new ARC migration functions in libclang whose only purpose, currently, is to accept <path> and provide pairs of original file/transformed file to map from the originals to the files after transformations are applied. Finally introduce the c-arcmt-test utility that exercises the new libclang functions, update arcmt-test, and add tests for the whole process. rdar://9735086. llvm-svn: 134844
-
Chris Lattner authored
the enum has already been converted. If not, there cannot be any types built on top of it, so there is no need to flush the cache. llvm-svn: 134841
-
Chris Lattner authored
llvm-svn: 134831
-
John McCall authored
expecting so much concentrated oddity on what seemed like a trivial feature. Thanks to François Pichet for doing the MSVC legwork here. llvm-svn: 134813
-
John McCall authored
llvm-svn: 134785
-
John McCall authored
- Emit default-initialization of arrays that were partially initialized with initializer lists with a loop, rather than emitting the default initializer N times; - support destroying VLAs of non-trivial type, although this is not yet exposed to users; and - support the partial destruction of arrays initialized with initializer lists when an initializer throws an exception. llvm-svn: 134784
-
Eli Friedman authored
Note that because we don't usually touch the MMX registers anyway, all -mno-mmx needs to do is tweak the x86-32 calling convention a little for vectors that look like MMX vectors, and prevent the definition of __MMX__. clang doesn't actually stop the user from using MMX inline asm operands or MMX builtins in -mno-mmx mode; as a QOI issue, it would be nice to diagnose, but I doubt it really matters much. <rdar://problem/9694837> llvm-svn: 134770
-
Bruno Cardoso Lopes authored
llvm-svn: 134765
-
Jakub Staszak authored
llvm-svn: 134761
-
Bruno Cardoso Lopes authored
llvm-svn: 134754
-
- Jul 08, 2011
-
-
Cameron Zwarich authored
llvm-svn: 134743
-
Benjamin Kramer authored
Found by valgrind. llvm-svn: 134733
-
Benjamin Kramer authored
llvm-svn: 134731
-
Eli Friedman authored
Fix up dependency file name printing to more closely match that of gcc, including fixing a nasty recent regression that could make us print "/foo.h" with a command-line including "-I ./". rdar://problem/9734352 llvm-svn: 134728
-
Fariborz Jahanian authored
object to a __weak object type. // rdar://9732636 llvm-svn: 134706
-
Douglas Gregor authored
lvalue/xvalue/rvalue, rather than just (incorrectly) assuming it's an lvalue. Fixes PR10285 / <rdar://problem/9743926>. llvm-svn: 134700
-
Chandler Carruth authored
Previously, despite the names 'enqueue' and 'dequeue', it behaved as a stack and visited blocks in a LIFO fashion. This interacts badly with extremely broad CFGs *inside* of a loop (such as a large switch inside a state machine) where every block updates a different variable. When encountering such a CFG, the checker visited blocks in essentially a "depth first" order due to the stack-like behavior of the work list. Combined with each block updating a different variable, the saturation logic of the checker caused it to re-traverse blocks [1,N-1] of the broad CFG inside the loop after traversing block N. These re-traversals were to propagate the variable values derived from block N. Assuming approximately the same number of variables as inner blocks exist, the end result is O(N^2) updates. By making this a queue, we also make the traversal essentially "breadth-first" across each of the N inner blocks of the loop. Then all of this state is propagated around to all N inner blocks of the loop. The result is O(N) updates. The truth is in the numbers: Before, gcc.c: 96409 block visits (max: 61546, avg: 591) After, gcc.c: 69958 block visits (max: 33090, avg: 429) Before, PR10183: 2540494 block vists (max: 2536495, avg: 37360) After, PR10183: 137803 block visits (max: 134406, avg: 2026) The nearly 20x reduction in work for PR10183 corresponds to a roughly 100x speedup in compile time. I've tested it on all the code I can get my hands on, and I've seen no slowdowns due to this change. Where I've collected stats, the ammount of work done is on average less. I'll also commit shortly some synthetic test cases useful in analyzing the performance of CFG-based warnings. Submitting this based on Doug's feedback that post-commit review should be good. Ted, please review! Hopefully this helps compile times until then. llvm-svn: 134697
-
Evan Cheng authored
change. Previously clang was passing the following feature strings to the ARM backend when CPU is cortex-a8: +neon,-vfp2,-vfp3 This used to work because -vfp2,-vfp3 had no effect after +neon. Now that the features are controlled by individual bits (with implied hierarchy), the net effect is all three features will be turned off. llvm-svn: 134691
-
Francois Pichet authored
- fix a comment. - Remove an unnecessary { } block. llvm-svn: 134690
-
Chandler Carruth authored
confusing indentations I've seen recently... Just noticed these while making a change elsewhere. No functionality changed. llvm-svn: 134685
-
Chandler Carruth authored
Original patch by John Freeman, some style tweaks by me. llvm-svn: 134683
-
Chandler Carruth authored
llvm-svn: 134675
-
Chandler Carruth authored
argument expansion to use the macro argument source locations as well. Add a few tests to exercise this. There is still a bit more work needed here though. llvm-svn: 134674
-
Chandler Carruth authored
instantiation and improve diagnostics which are stem from macro arguments to trace the argument itself back through the layers of macro expansion. This requires some tricky handling of the source locations, as the argument appears to be expanded in the opposite direction from the surrounding macro. This patch provides helper routines that encapsulate the logic and explain the reasoning behind how we step through macros during diagnostic printing. This fixes the rest of the test cases originially in PR9279, and later split out into PR10214 and PR10215. There is still some more work we can do here to improve the macro backtrace, but those will follow as separate patches. llvm-svn: 134660
-
Fariborz Jahanian authored
object to a __weak object/type. // rdar://9732636. One item is yet todo. llvm-svn: 134655
-
Eric Christopher authored
Fixes PR10299 and rdar://9740322 llvm-svn: 134654
-
Jonathan D. Turner authored
Remove BoostCon-specific code from Clang. FWIW, I'm a fan of things like this living in a separate branch. llvm-svn: 134649
-