- Feb 17, 2012
-
-
Richard Smith authored
zero-initialize class types with virtual bases when constant-evaluating an initializer. llvm-svn: 150770
-
- Feb 16, 2012
-
-
Eric Christopher authored
"Add a completed/incomplete type difference. This allows us to have partial types for contexts and forward decls while allowing us to complete types later on for debug purposes. This piggy-backs on the metadata replacement and rauw changes for temporary nodes and takes advantage of the incremental support I added in earlier. This allows us to, if we decide, to limit adding methods and variables to structures in order to limit the amount of debug information output into a .o file. The caching is a bit complicated though so any thoughts on untangling that are welcome." with a fix: - Remove all RAUW during type construction by adding stub versions of types that we later complete. and some TODOs: - Add an RAUW cache for forward declared types so that we can replace them at the end of compilation. - Remove the code that updates on completed types because we no longer need to have that happen. We emit incomplete types on purpose and only want to know when we want to complete them. llvm-svn: 150752
-
Eli Friedman authored
llvm-svn: 150738
-
Richard Smith authored
restriction and add some tests. llvm-svn: 150721
-
Eric Christopher authored
This reverts commit 9a68d4584afcd0853b930bd80235b58736e785b4. llvm-svn: 150637
-
Eric Christopher authored
partial types for contexts and forward decls while allowing us to complete types later on for debug purposes. This piggy-backs on the metadata replacement and rauw changes for temporary nodes and takes advantage of the incremental support I added in earlier. This allows us to, if we decide, to limit adding methods and variables to structures in order to limit the amount of debug information output into a .o file. The caching is a bit complicated though so any thoughts on untangling that are welcome. llvm-svn: 150631
-
- Feb 15, 2012
-
-
John McCall authored
is general goodness because representations of member pointers are not always equivalent across member pointer types on all ABIs (even though this isn't really standard-endorsed). Take advantage of the new information to teach IR-generation how to do these reinterprets in constant initializers. Make sure this works when intermingled with hierarchy conversions (although this is not part of our motivating use case). Doing this in the constant-evaluator would probably have been better, but that would require a *lot* of extra structure in the representation of constant member pointers: you'd really have to track an arbitrary chain of hierarchy conversions and reinterpretations in order to get this right. Ultimately, this seems less complex. I also wasn't quite sure how to extend the constant evaluator to handle foldings that we don't actually want to treat as extended constant expressions. llvm-svn: 150551
-
- Feb 14, 2012
-
-
Richard Smith authored
used to construct an object of union type with a deleted default constructor (plus fixes for some related value-initialization corner cases). llvm-svn: 150502
-
Eli Friedman authored
llvm-svn: 150458
-
- Feb 13, 2012
-
-
Richard Smith authored
constructor, and that constructor is used to initialize an object of static storage duration such that all members and bases are initialized by constant expressions, constant initialization is performed. In this case, the object can still have a non-trivial destructor, and if it does, we must emit a dynamic initializer which performs no initialization and instead simply registers that destructor. llvm-svn: 150419
-
Eric Christopher authored
PR11970. llvm-svn: 150389
-
Eric Christopher authored
while reworking how we handle wanting to emit only parts of structures. Fixes PR11970. llvm-svn: 150388
-
- Feb 09, 2012
-
-
Eric Christopher authored
difference in the qual type. This is a workaround for the fact that the type isn't artificial but the this decl is, however, we don't have any way of representing it in the current metadata. For now, however, just don't cache the full type. Fixes rdar://10831526 and probably a couple of others. llvm-svn: 150159
-
- Feb 08, 2012
-
-
Eric Christopher authored
llvm-svn: 150026
-
Eric Christopher authored
caching of results after we create them. Fixes rdar://10809898 llvm-svn: 150025
-
- Feb 06, 2012
-
-
Craig Topper authored
llvm-svn: 149862
-
Richard Smith authored
llvm-svn: 149854
-
- Feb 04, 2012
-
-
Devang Patel authored
llvm-svn: 149726
-
- Feb 03, 2012
-
-
Douglas Gregor authored
size. Otherwise, we can end up with bogus layouts. llvm-svn: 149703
-
Douglas Gregor authored
template without a corresponding parameter pack, don't immediately substitute the alias template. This is under discussion in the C++ committee, and may become ill-formed, but for now we match GCC. llvm-svn: 149697
-
- Feb 02, 2012
-
-
Rafael Espindola authored
llvm-svn: 149559
-
- Feb 01, 2012
-
-
Eric Christopher authored
instead of the entire class definition. llvm-svn: 149474
-
Bob Wilson authored
I removed support for "*-darwin*-iphoneos" triples, since we now have iOS listed as a separate OS in the triples. llvm-svn: 149455
-
Richard Smith authored
fixed in r149440. llvm-svn: 149450
-
- Jan 30, 2012
-
-
John McCall authored
mangling of floating-point literals. I just went ahead and reimplemented toString() here; if someone wants to generalize the library routine to do this, or feels strongly that we should be post-processing, please feel free. llvm-svn: 149256
-
- Jan 29, 2012
-
-
John McCall authored
in the presence of straight-line cleanups. This is a simple but important case, particularly for ARC. llvm-svn: 149190
-
John McCall authored
like Darwin that don't support it. We should also complain about invalid -fvisibility=protected, but that information doesn't seem to exist at the most appropriate time, so I've left a FIXME behind. llvm-svn: 149186
-
- Jan 27, 2012
-
-
Richard Smith authored
function definition can produce a constant expression. This also provides the last few checks for [dcl.constexpr]p3 and [dcl.constexpr]p4. llvm-svn: 149108
-
- Jan 26, 2012
-
-
Douglas Gregor authored
provide the layout of records, rather than letting Clang compute the layout itself. LLDB provides the motivation for this feature: because various layout-altering attributes (packed, aligned, etc.) don't get reliably get placed into DWARF, the record layouts computed by LLDB from the reconstructed records differ from the actual layouts, and badness occurs. This interface lets the DWARF data drive layout, so we don't need the attributes preserved to get the answer write. The testing methodology for this change is fun. I've introduced a variant of -fdump-record-layouts called -fdump-record-layouts-simple that always has the simple C format and provides size/alignment/field offsets. There is also a -cc1 option -foverride-record-layout=<file> to take the output of -fdump-record-layouts-simple and parse it to produce a set of overridden layouts, which is introduced into the AST via a testing-only ExternalASTSource (called LayoutOverrideSource). Each test contains a number of records to lay out, which use various layout-changing attributes, and then dumps the layouts. We then run the test again, using the preprocessor to eliminate the layout-changing attributes entirely (which would give us different layouts for the records), but supplying the previously-computed record layouts. Finally, we diff the layouts produced from the two runs to be sure that they are identical. Note that this code makes the assumption that we don't *have* to provide the offsets of bases or virtual bases to get the layout right, because the alignment attributes don't affect it. I believe this assumption holds, but if it does not, we can extend LayoutOverrideSource to also provide base offset information. Fixes the Clang side of <rdar://problem/10169539>. llvm-svn: 149055
-
Chris Lattner authored
when asking for a ConstantStruct with all undef elements. llvm-svn: 149025
-
Rafael Espindola authored
Now the lexer just produces a token and the parser is the one responsible for activating it. This fixes problem like the one pr11797 where the lexer and the parser were not in sync. This also let us be more strict on where in the file we accept these pragmas. llvm-svn: 149014
-
Eli Friedman authored
Don't stack-allocate an IntegerLiteral which can be referred to after the current method returns. PR11744, part 2. llvm-svn: 148995
-
- Jan 25, 2012
-
-
Eli Friedman authored
llvm-svn: 148923
-
- Jan 20, 2012
-
-
Eric Christopher authored
llvm-svn: 148585
-
Sebastian Pop authored
llvm-svn: 148582
-
- Jan 19, 2012
-
-
Richard Smith authored
values and non-type template arguments of integral and enumeration types. This change causes some legal C++98 code to no longer compile in C++11 mode, by enforcing the C++11 rule that narrowing integral conversions are not permitted in the final implicit conversion sequence for the above cases. llvm-svn: 148439
-
- Jan 18, 2012
-
-
Fariborz Jahanian authored
llvm-svn: 148361
-
Fariborz Jahanian authored
patch (slightly revised) by Aaron Ballman. llvm-svn: 148359
-
- Jan 16, 2012
-
-
Fariborz Jahanian authored
non-constant-folded-switch containing a constant-folded switch. llvm-svn: 148247
-
Fariborz Jahanian authored
llvm-svn: 148245
-