- Feb 12, 2012
-
-
Nick Lewycky authored
llvm-svn: 150319
-
Sebastian Redl authored
instead of having a special-purpose function. - ActOnCXXDirectInitializer, which was mostly duplication of AddInitializerToDecl (leading e.g. to PR10620, which Eli fixed a few days ago), is dropped completely. - MultiInitializer, which was an ugly hack I added, is dropped again. - We now have the infrastructure in place to distinguish between int x = {1}; int x({1}); int x{1}; -- VarDecl now has getInitStyle(), which indicates which of the above was used. -- CXXConstructExpr now has a flag to indicate that it represents list- initialization, although this is not yet used. - InstantiateInitializer was renamed to SubstInitializer and simplified. - ActOnParenOrParenListExpr has been replaced by ActOnParenListExpr, which always produces a ParenListExpr. Placed that so far failed to convert that back to a ParenExpr containing comma operators have been fixed. I'm pretty sure I could have made a crashing test case before this. The end result is a (I hope) considerably cleaner design of initializers. More importantly, the fact that I can now distinguish between the various initialization kinds means that I can get the tricky generalized initializer test cases Johannes Schaub supplied to work. (This is not yet done.) This commit passed self-host, with the resulting compiler passing the tests. I hope it doesn't break more complicated code. It's a pretty big change, but one that I feel is necessary. llvm-svn: 150318
-
Sebastian Redl authored
Drive-by fix of incorrect diagnostic, and a test case for said diagnostic. The double error is unfortunate, but I really don't see an alternative whose effort is worth it. llvm-svn: 150317
-
Sebastian Redl authored
Fix parsing new expressions using init lists. Probably still do the wrong thing in cases involving array new. Show that many cases using initializer list constructors work, in that they parse and pass semantic analysis. llvm-svn: 150316
-
Anna Zaks authored
a pointer cannot escape through calls to system functions. Also, stop after reporting the first use-after-free. llvm-svn: 150315
-
Craig Topper authored
llvm-svn: 150314
-
- Feb 11, 2012
-
-
Anna Zaks authored
memory. (As per one test case, the existing checker thought that this could cause a lot of false positives - not sure if that's valid, to be verified.) llvm-svn: 150313
-
Anna Zaks authored
Resolves a common false positive, where we were reporting a leak inside asserts llvm-svn: 150312
-
Anna Zaks authored
We use the same logic here as the RetainRelease checker. llvm-svn: 150311
-
Fariborz Jahanian authored
meta-data. llvm-svn: 150310
-
Richard Smith authored
cv-unqualified type. This is essential in order to allow move-only objects of const-qualified types to be copy-initialized via a converting constructor. llvm-svn: 150309
-
Richard Smith authored
before complaining that it's incomplete. llvm-svn: 150308
-
Anton Korobeynikov authored
Patch by Kai Nacke! llvm-svn: 150307
-
Ryan Govostes authored
llvm-svn: 150306
-
Benjamin Kramer authored
llvm-svn: 150305
-
Benjamin Kramer authored
llvm-svn: 150304
-
Benjamin Kramer authored
This requires some gymnastics to make it available for C code. Remove the names from the disassembler tables, making them relocation free. llvm-svn: 150303
-
Bill Wendling authored
llvm-svn: 150301
-
Bill Wendling authored
Module flags are key-value pairs associated with the module. They include a 'behavior' value, indicating how module flags react when mergine two files. Normally, it's just the union of the two module flags. But if two module flags have the same key, then the resulting flags are dictated by the behaviors. Allowable behaviors are: Error Emits an error if two values disagree. Warning Emits a warning if two values disagree. Require Emits an error when the specified value is not present or doesn't have the specified value. It is an error for two (or more) llvm.module.flags with the same ID to have the Require behavior but different values. There may be multiple Require flags per ID. Override Uses the specified value if the two values disagree. It is an error for two (or more) llvm.module.flags with the same ID to have the Override behavior but different values. llvm-svn: 150300
-
Craig Topper authored
Remove some patterns for matching vector_shuffle instructions since vector_shuffles should be custom lowered before isel. llvm-svn: 150299
-
Andrew Trick authored
In case the MachineScheduling pass I'm working on doesn't work well for another target, they can completely override it. This also adds a hook immediately after the RegAlloc pass to cleanup immediately after vregs go away. We may want to fold it into the postRA hook later. llvm-svn: 150298
-
Andrew Trick authored
llvm-svn: 150297
-
Craig Topper authored
Fix shuffle lowering code to stop creating temporary DAG nodes to do shuffle mask checks on. This seemed to be confusing things such that vector_shuffle ops to got through to iselection. This is another step towards removing the vector_shuffle handling patterns from isel. llvm-svn: 150296
-
Eli Friedman authored
Implement warning for non-wide string literals with an unexpected encoding. Downgrade error for non-wide character literals with an unexpected encoding to a warning for compatibility with gcc and older versions of clang. <rdar://problem/10837678>. llvm-svn: 150295
-
Chandler Carruth authored
simplicity. Also addresses a FIXME, although not one that could be observed. llvm-svn: 150294
-
Eli Friedman authored
Basic support for referring to captured variables from lambdas. Some simple examples seem to work. Tests coming up soon. llvm-svn: 150293
-
Eli Friedman authored
Make sure Sema creates a field for 'this' captures. (Doug, please double-check that this is correct.) llvm-svn: 150292
-
Argyrios Kyrtzidis authored
a reference for the instantiation decl. Also test that its location is correct after previous commit. llvm-svn: 150291
-
Argyrios Kyrtzidis authored
to the pattern template that it came from, otherwise we had this situation: template <typename T1, typename T2> struct S { }; template <typename T> struct S<T, int> { }; void f() { S<int, int> s; // location of declaration "S<int, int>" was of "S<T1, T2>" not "S<T, int>" } llvm-svn: 150290
-
Sean Callanan authored
"target modules lookup" also work with the "--function" option, so you can search for functions that aren't inlined. This is the same query that the expression parser makes, so it's good for diagnosing situations where the expression parser doesn't find a function you think should be there. llvm-svn: 150289
-
Jakob Stoklund Olesen authored
When using register masks, registers like %rip are clobbered by the register mask. LICM should still be able to hoist instructions reading %rip from a loop containing calls. llvm-svn: 150288
-
Jakob Stoklund Olesen authored
Again the goal is to produce identical assembly with register mask operands enabled. llvm-svn: 150287
-
Jakob Stoklund Olesen authored
llvm-svn: 150286
-
Sean Callanan authored
prettier. llvm-svn: 150285
-
Eli Friedman authored
llvm-svn: 150284
-
Douglas Gregor authored
Add simple semantic test for C++11 [expr.prim.lambda]p16, which covers recursive capture. This is far more interesting for IRgen. llvm-svn: 150283
-
Douglas Gregor authored
default arguments if in fact those lambdas capture any entity. llvm-svn: 150282
-
Fariborz Jahanian authored
llvm-svn: 150281
-
Eli Friedman authored
Setting UserLabelPrefix correctly fixes PR11949. llvm-svn: 150280
-
- Feb 10, 2012
-
-
Sean Callanan authored
indicate whether inline functions are desired. This allows the expression parser, for instance, to filter out inlined functions when looking for functions it can call. llvm-svn: 150279
-