aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaInit.cpp
AgeCommit message (Collapse)Author
2009-06-30De-ASTContext-ify DeclContext.Argyrios Kyrtzidis
Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating". Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74506 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-26Improve error recovery in C++: when we hit 'implicit int' cases in C++,Chris Lattner
these are usually because the parser was thoroughly confused. In addition to typing the value being declared as an int and hoping for the best, we mark the value as invalid so we don't get chains of errors when it is used downstream. In C, implicit int actually is valid, so typing the thing as int is good and marking it invalid is bad. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74266 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-13Allow initializing a vector with a vector in addition to allowing a list Eli Friedman
of the elements. Issue reported on cfe-dev by Mattias Holm. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73292 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-31Fix for PR4285: allow intializing a const wchar_t array with a wide Eli Friedman
string. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72663 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Remove VarDecl from CXXConstructExpr.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72633 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Remove VarDecl from CheckInitializerTypes now that CXXConstructExpr doesn't ↵Anders Carlsson
need to take a VarDecl anymore. (It still does, but it won't for long) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72630 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Make sure we don't give the wrong warning, and make sure not to set Eli Friedman
hadError (suppressing future diagnostics) if we didn't print an error. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72588 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Add an assertion so that we don't accidentally build constant arrays of Eli Friedman
VLAs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72587 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Revert r72575, which isn't really right, and fix up other code to Eli Friedman
handle the construct in question correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72581 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Avoid dumping during semantic analysis when checking array types whenMike Stump
a vla is used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72575 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Fix another test case.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72478 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Relax an assert to an if check.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72477 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Create CXXConstructExprs when constructing via copy initialization.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72474 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Template instantiation for GNU array-range designators.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72234 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Template instantiation for C99 designated initializers, because weDouglas Gregor
can. Also, delay semantic analysis of initialization for value-dependent as well as type-dependent expressions, since we can't always properly type-check a value-dependent expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72233 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Use v.data() instead of &v[0] when SmallVector v might be empty.Jay Foad
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-16PR3009: Get rid of bogus warning for scalar compound literals.Eli Friedman
This patch isn't quite ideal in that it eliminates the warning for constructs like "int a = {1};", where the braces are in fact redundant. However, that would have required a bunch of refactoring, and it's much less likely to cause confusion compared to redundant nested braces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71939 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-16Reflow some comments.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71936 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-01Replace more release+static_cast with takeAs.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70567 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-25fix PR4073 by making designated initializer checking code useChris Lattner
VerifyIntegerConstantExpression instead of isIntegerConstantExpr. This makes it ext-warn but tolerate things that fold to a constant but that are not valid i-c-e's. There must be a bug in the i-c-e computation though, because it doesn't catch this case even with pedantic. This also switches the later code to use EvaluateAsInt which is simpler and handles everything that evaluate does. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70081 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16Attempt to fix a read-after-free running test/Sema/designated-initializers.c.Eli Friedman
Douglas, can you check that this is doing the right thing? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69298 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15Implement support for designated initializers that refer to members ofDouglas Gregor
anonymous structs or unions. Fixes PR3778. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69153 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15Switch designated-initializer checking from using designator iteratorsDouglas Gregor
to using designator indices. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69147 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-09Propagate the ASTContext to various AST traversal and lookup functions.Douglas Gregor
No functionality change (really). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68726 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Add some more code modification hintsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68261 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Make our diagnostics about the obsolete GNU designated-initializerDouglas Gregor
syntax into extension warnings, and provide code-modification hints showing how to fix the problem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67885 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-21Fix a thinko in the pre-allocation strategy for structured initializerDouglas Gregor
lists. The code wasn't accounting for the distinction between the top-level call to getStructuredSubobjectInit and later calls that occur deeper in the hierarchy. This problem manifested itself as over-allocation in cases where we have large arrays of small structures (<rdar://problem/6707362>). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67452 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-20When building the structured initializer list, pre-allocate storage inDouglas Gregor
its vectors based on the subobject type we're initializing and the (unstructured) initializer list. This eliminates some malloc thrashing when parsing initializers (from 117 vector reallocations down to 0 when parsing Cocoa.h). We can't always pre-allocate the right amount of storage, since designated initializers can cause us to initialize in non-predictable patterns. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67421 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-20Allow flexible array initializers that are not surrounded byDouglas Gregor
braces. We now build the appropriate fully-structured initializer list for such things. Per PR3618, verified that we're getting the right code generation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67353 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-16Almost complete implementation of rvalue references. One bug, and a few ↵Sebastian Redl
unclear areas. Maybe Doug can shed some light on some of the fixmes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67059 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-01Fix PR3509 by providing correct starting locations for initializer listsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65777 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-28Eliminate CXXRecordTypeDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65671 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-26fix a bozobug.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65589 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-26ok, not as broken as I thought, just confusing. This allows Chris Lattner
initialization of wchar_t arrays with wide strings, and generalizes wchar_size.c to work on all targets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65586 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-26allow wide strings to initialize arrays compatible with wchar_t. Chris Lattner
Unfortunately this doesn't work yet because wchar_t is completely broken in C. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65585 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24handle @encode interactions with array initializers.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65401 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24rename CheckStringLiteralInit to CheckStringInit and pass in the Chris Lattner
string size as an argument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65400 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24make SemaRef be a reference to sema, not a pointer.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65399 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24move InitListChecker to be private to SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65398 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Make CheckSingleInitializer a static function in SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65397 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24make CheckStringLiteralInit a static function in SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65396 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24change IsStringLiteralInit into a static function in SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65395 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24move some initialization checking code from SemaDecl.cppChris Lattner
to SemaInit.cpp, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65394 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18Downgrade the "excess elements in initializer" errors to warnings *inDouglas Gregor
C*. They're required errors in C++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64964 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-12Fix a bug with designated initializers where we were stepping out of aDouglas Gregor
union subobject initialization before checking whether the next initiailizer was actually a designated initializer. This led to spurious "excess elements in union initializer" errors. Thanks to rdivacky for reporting the bug! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64392 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-09When handling "the rest" of a designated array subobject, maybe sureDouglas Gregor
to tell it that it wasn't (directly) designated. This way, we unwind back to the explicit initializer list properly rather than getting stuck in the wrong subobject. Fixes llvm.org/PR3519 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64155 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04Implement semantic analysis for the GNU flexible array initializationDouglas Gregor
extension. The interaction with designated initializers is a bit... interesting... but we follow GNU's lead and don't permit too much crazy code in this area. Also, make the "excess initializers" error message a bit more informative. Addresses PR2561: http://llvm.org/bugs/show_bug.cgi?id=2561 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63785 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-02Add iterators to LookupResult, allowing one to iterate over theDouglas Gregor
non-ambiguous name lookup results without allocating any memory, e.g., for sets of overloaded functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63549 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-02Check value-initializations that occur when an initializer listDouglas Gregor
provides too few elements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63525 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-30Upgrade the "excess elements in array initializer" warning to anDouglas Gregor
error, since both C99 and C++ consider it an error. For reference, GCC makes this a warning while G++ makes it an error. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63435 91177308-0d34-0410-b5e6-96231b3b80d8