| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Douglas, can you check that this is doing the right thing?
llvm-svn: 69298
|
|
|
|
|
|
| |
anonymous structs or unions. Fixes PR3778.
llvm-svn: 69153
|
|
|
|
|
|
| |
to using designator indices. No functionality change.
llvm-svn: 69147
|
|
|
|
|
|
| |
No functionality change (really).
llvm-svn: 68726
|
|
|
|
| |
llvm-svn: 68261
|
|
|
|
|
|
|
| |
syntax into extension warnings, and provide code-modification hints
showing how to fix the problem.
llvm-svn: 67885
|
|
|
|
|
|
|
|
|
|
| |
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>).
llvm-svn: 67452
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 67421
|
|
|
|
|
|
|
|
| |
braces. We now build the appropriate fully-structured initializer list
for such things. Per PR3618, verified that we're getting the right
code generation.
llvm-svn: 67353
|
|
|
|
|
|
| |
unclear areas. Maybe Doug can shed some light on some of the fixmes.
llvm-svn: 67059
|
|
|
|
| |
llvm-svn: 65777
|
|
|
|
| |
llvm-svn: 65671
|
|
|
|
| |
llvm-svn: 65589
|
|
|
|
|
|
|
| |
initialization of wchar_t arrays with wide strings, and generalizes
wchar_size.c to work on all targets.
llvm-svn: 65586
|
|
|
|
|
|
|
| |
Unfortunately this doesn't work yet because wchar_t is completely
broken in C.
llvm-svn: 65585
|
|
|
|
| |
llvm-svn: 65401
|
|
|
|
|
|
| |
string size as an argument.
llvm-svn: 65400
|
|
|
|
| |
llvm-svn: 65399
|
|
|
|
| |
llvm-svn: 65398
|
|
|
|
| |
llvm-svn: 65397
|
|
|
|
| |
llvm-svn: 65396
|
|
|
|
| |
llvm-svn: 65395
|
|
|
|
|
|
| |
to SemaInit.cpp, no functionality change.
llvm-svn: 65394
|
|
|
|
|
|
| |
C*. They're required errors in C++.
llvm-svn: 64964
|
|
|
|
|
|
|
|
|
| |
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!
llvm-svn: 64392
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 64155
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 63785
|
|
|
|
|
|
|
| |
non-ambiguous name lookup results without allocating any memory, e.g.,
for sets of overloaded functions.
llvm-svn: 63549
|
|
|
|
|
|
| |
provides too few elements.
llvm-svn: 63525
|
|
|
|
|
|
|
| |
error, since both C99 and C++ consider it an error. For reference, GCC
makes this a warning while G++ makes it an error.
llvm-svn: 63435
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Support initialization of reference members; complain if any
reference members are left uninitialized.
- Use C++ copy-initialization for initializing each element (falls
back to constraint checking in C)
- Make sure we diagnose when one tries to provide an initializer
list for a non-aggregate.
- Don't complain about empty initializers in C++ (they are permitted)
- Unrelated but necessary: don't bother trying to convert the
decl-specifier-seq to a type when we're dealing with a C++
constructor, destructor, or conversion operator; it results in
spurious warnings.
llvm-svn: 63431
|
|
|
|
|
|
|
|
| |
type" rather than the C definition. We do this because both C99 and
Clang always use "aggregate type" as "aggregate or union type", and
the C++ definition includes union types.
llvm-svn: 63395
|
|
|
|
|
|
| |
list that involves the GNU array-range designator extension
llvm-svn: 63327
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
represents an implicit value-initialization of a subobject of a
particular type. This replaces the (ab)use of CXXZeroValueInitExpr
within initializer lists for the "holes" that occur due to the use of
C99 designated initializers.
The new test case is currently XFAIL'd, because CodeGen's
ConstExprEmitter (in lib/CodeGen/CGExprConstant.cpp) needs to be
taught to value-initialize when it sees ImplicitValueInitExprs.
llvm-svn: 63317
|
|
|
|
|
|
| |
have to try to guess which member is being initialized.
llvm-svn: 63315
|
|
|
|
|
|
| |
redundant #includes. Patch by Anders Johnsen!
llvm-svn: 63271
|
|
|
|
|
|
|
|
|
|
|
|
| |
llvm[0]: Compiling SemaInit.cpp for Debug build
SemaInit.cpp:171: error: ‘InitListChecker’ has not been declared
SemaInit.cpp:171: error: ISO C++ forbids declaration of ‘InitListChecker’ with no type
SemaInit.cpp: In function ‘int InitListChecker(clang::Sema*, clang::InitListExpr*, clang::QualType&)’:
SemaInit.cpp:172: error: ‘hadError’ was not declared in this scope
SemaInit.cpp:173: error: ‘SemaRef’ was not declared in this scope
SemaInit.cpp:177: error: ‘FullyStructuredList’ was not declared in this scope
llvm-svn: 63270
|
|
|
|
| |
llvm-svn: 63261
|
|
|
|
| |
llvm-svn: 63258
|
|
|
|
|
|
| |
Simplifies (somewhat) the actually checking of the initializer expression following the designators
llvm-svn: 63257
|
|
|
|
| |
llvm-svn: 63254
|
|
|
|
|
|
|
|
|
|
|
|
| |
initializers.
- We now initialize unions properly when a member other than the
first is named by a designated initializer.
- We now provide proper semantic analysis and code generation for
GNU array-range designators *except* that side effects will occur
more than once. We warn about this.
llvm-svn: 63253
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The approach I've taken in this patch is relatively straightforward,
although the code itself is non-trivial. Essentially, as we process
an initializer list we build up a fully-explicit representation of the
initializer list, where each of the subobject initializations occurs
in order. Designators serve to "fill in" subobject initializations in
a non-linear way. The fully-explicit representation makes initializer
lists (both with and without designators) easy to grok for codegen and
later semantic analyses. We keep the syntactic form of the initializer
list linked into the AST for those clients interested in exactly what
the user wrote.
Known limitations:
- Designating a member of a union that isn't the first member may
result in bogus initialization (we warn about this)
- GNU array-range designators are not supported (we warn about this)
llvm-svn: 63242
|
|
|
|
|
|
|
|
|
| |
.def file for each library. This means that adding a diagnostic
to sema doesn't require all the other libraries to be rebuilt.
Patch by Anders Johnsen!
llvm-svn: 63111
|
|
|
|
| |
llvm-svn: 62884
|
|
|
|
|
|
| |
PR clang/3378
llvm-svn: 62876
|
|
|
|
|
|
| |
values, to really really fix PR clang/3377
llvm-svn: 62858
|
|
|
|
|
|
| |
Fixes PR clang/3377
llvm-svn: 62851
|
|
|
|
|
|
|
|
|
|
|
| |
initializers, so that we are within the appropriate subobject after
we've processed a multi-designator designation. We're matching GCC and
EDG's behavior on all examples I've found thus far.
*Huge* thanks to Eli Friedman for pointing out my fundamental
misunderstanding of "current object" in the C99 spec.
llvm-svn: 62812
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
designated initializers. This implementation should cover all of the
constraints in C99 6.7.8, including long, complex designations and
computing the size of incomplete array types initialized with a
designated initializer. Please see the new test-case and holler if you
find cases where this doesn't work.
There are still some wrinkles with GNU's anonymous structs and
anonymous unions (it isn't clear how these should work; we'll just
follow GCC's lead) and with designated initializers for the members of a
union. I'll tackle those very soon.
CodeGen is still nonexistent, and there's some leftover code in the
parser's representation of designators that I'll also need to clean up.
llvm-svn: 62737
|