- Dec 16, 2010
-
-
Michael J. Spencer authored
llvm-svn: 121956
-
Douglas Gregor authored
DeclarationNameInfo instances don't always have a non-NULL TypeSourceInfo? llvm-svn: 121940
-
Douglas Gregor authored
llvm-svn: 121938
-
Douglas Gregor authored
llvm-svn: 121934
-
Fariborz Jahanian authored
in a forward @class object. // rdar://8774513 llvm-svn: 121933
-
Douglas Gregor authored
drive-by, make sure to check for unexpanded parameter packs within the name of a declaration. llvm-svn: 121930
-
Douglas Gregor authored
llvm-svn: 121928
-
Douglas Gregor authored
llvm-svn: 121922
-
Bob Wilson authored
Also tweak the VCVT_F32_F16 entry in arm_neon.td to be more consistent with the other floating-point conversion builtins. Radar 8068427. llvm-svn: 121916
-
Fariborz Jahanian authored
created for auto-synthesis are @private. Fixes: // rdar://8769582 llvm-svn: 121913
-
Douglas Gregor authored
declarations. This is a work in progress, as I go through the C++ declaration grammar to identify where unexpanded parameter packs can occur. llvm-svn: 121912
-
- Dec 15, 2010
-
-
Douglas Gregor authored
unexpanded parameter pack" bit and that the recursive AST visitor can then find those unexpanded parameter packs. llvm-svn: 121899
-
Douglas Gregor authored
parameter packs within a statement, type, etc. Use this visitor to provide improved diagnostics for the presence of unexpanded parameter packs in a full expression, base type, declaration type, etc., by highlighting the unexpanded parameter packs and providing their names, e.g., test/CXX/temp/temp.decls/temp.variadic/p5.cpp:28:85: error: declaration type contains unexpanded parameter packs 'VeryInnerTypes', 'OuterTypes', ... ...VeryInnerTypes, OuterTypes>, pair<InnerTypes, OuterTypes> > types; ~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ^ llvm-svn: 121883
-
Argyrios Kyrtzidis authored
Diagnostic pragmas are broken because we don't keep track of the diagnostic state changes and we only check the current/latest state. Problems manifest if a diagnostic is emitted for a source line that has different diagnostic state than the current state; this can affect a lot of places, like C++ inline methods, template instantiations, the lexer, etc. Fix the issue by having the Diagnostic object keep track of the source location of the pragmas so that it is able to know what is the diagnostic state at any given source location. Fixes rdar://8365684. llvm-svn: 121873
-
Douglas Gregor authored
Move the work-in-progress implementation of variadic templates to its own file in Sema. No functionality change. llvm-svn: 121869
-
John McCall authored
come first. llvm-svn: 121866
-
Douglas Gregor authored
parameters. Fixes <rdar://problem/8769025>. llvm-svn: 121864
-
Peter Collingbourne authored
BuildExpressionFromIntegralTemplateArgument can produce malformed IntegerLiterals with an EnumType if the template parameter type is an EnumType. This breaks the AST printer which expects all IntegerLiterals to have a plain integer type. Instead, give the IntegerLiteral the enum's promotion type and wrap in an implicit cast to the EnumType. llvm-svn: 121862
-
Chandler Carruth authored
Silence GCC warning about control reaching the end of the function and explicitly mark that all cases are handled. llvm-svn: 121855
-
John McCall authored
future task of performing contextual conversion to size_t in a VLA size expression. :) llvm-svn: 121836
-
John McCall authored
within the class. Teach IR gen to look for function definitions in record lexical contexts when deciding whether to emit a function whose address was taken. Fixes PR8789. llvm-svn: 121833
-
Douglas Gregor authored
whether the expression contains an unexpanded parameter pack, in the same vein as the changes to the Type hierarchy. Compute this bit within all of the Expr subclasses. This change required a bunch of reshuffling of dependency calculations, mainly to consolidate them inside the constructors and to fuse multiple loops that iterate over arguments to determine type dependence, value dependence, and (now) containment of unexpanded parameter packs. Again, testing is painfully sparse, because all of the diagnostics will change and it is more important to test the to-be-written visitor that collects unexpanded parameter packs. llvm-svn: 121831
-
John McCall authored
llvm-svn: 121821
-
- Dec 14, 2010
-
-
Abramo Bagnara authored
llvm-svn: 121795
-
John McCall authored
the basic casting logic to insert intermediate casts and preserve the exact complex-cast design. Fixes a crash in the test suite. llvm-svn: 121776
-
John McCall authored
by valgrind where we were doing the wrong thing in the presence of invalid exception specs. llvm-svn: 121770
-
John McCall authored
llvm-svn: 121763
-
John McCall authored
llvm-svn: 121759
-
John McCall authored
class to be passed around. The line between argument and return types and everything else is kindof vague, but I think it's justifiable. llvm-svn: 121752
-
Dan Gohman authored
llvm-svn: 121734
-
- Dec 13, 2010
-
-
Douglas Gregor authored
and TemplateArgument with an operation that determines whether there are any unexpanded parameter packs within that construct. Use this information to diagnose the appearance of the names of parameter packs that have not been expanded (C++ [temp.variadic]p5). Since this property is checked often (every declaration, ever expression statement, etc.), we extend Type and Expr with a bit storing the result of this computation, rather than walking the AST each time to determine whether any unexpanded parameter packs occur. This commit is deficient in several ways, which will be remedied with future commits: - Expr has a bit to store the presence of an unexpanded parameter pack, but it is never set. - The error messages don't point out where the unexpanded parameter packs were named in the type/expression, but they should. - We don't check for unexpanded parameter packs in all of the places where we should. - Testing is sparse, pending the resolution of the above three issues. llvm-svn: 121724
-
Abramo Bagnara authored
llvm-svn: 121720
-
Chandler Carruth authored
cases. First, omit all builtin overloads when no non-record type is in the set of candidate types. Second, avoid arithmetic type overloads for non-arithmetic or enumeral types (counting vector types as arithmetic due to Clang extensions). When heavily using constructs such as STL's '<<' based stream logging, this can have a significant impact. One logging-heavy test case's compile time dropped by 10% with this. Self-host shows 1-2% improvement in compile time, but that's likely in the noise. llvm-svn: 121665
-
Peter Collingbourne authored
llvm-svn: 121654
-
Peter Collingbourne authored
llvm-svn: 121653
-
- Dec 12, 2010
-
-
Chandler Carruth authored
a translation unit to the ActOnEndOfTranslationUnit function instead of doing it at the start of DefineUsedVTables. The latter is now called *recursively* during template instantiation, which causes an absolutely insane number of walks of every record decl in the translation unit. After this patch, an extremely template instantiation heavy test case's compile time drops by 10x, and we see between 15% and 20% improvement in average compile times across a project. This is just recovering a regression, it doesn't make anything faster than it was several weeks ago. llvm-svn: 121644
-
Wesley Peck authored
llvm-svn: 121640
-
Chandler Carruth authored
candidates. They're now wrapped in nice APIs which hide the tables, etc. Also removes some repetitive code from clients. llvm-svn: 121634
-
Chandler Carruth authored
type. Localize all of the logic within a single function rather than spreading it throughout the class. Also fixes a buglet where we failed to check for a RHS arithmetic type wider than the LHS and return its canonical type. I've yet to produce a test case that breaks because of this, but it was spotted by inspection by folks on the IRC channel and is obviously correct now. llvm-svn: 121633
-
Chandler Carruth authored
llvm-svn: 121632
-