Sebastian Redl
0753c6f591
Bring member pointer operands of the conditional operator to a common type. We're getting there ...
...
llvm-svn: 69548
2009-04-19 21:15:26 +00:00
Chris Lattner
21656f22db
basic support for -Wunknown-pragmas, more coming.
...
llvm-svn: 69547
2009-04-19 21:10:26 +00:00
Daniel Dunbar
8281bdeb4d
Forward -fno-diagnostics-fixit-info to clang-cc.
...
llvm-svn: 69546
2009-04-19 21:09:34 +00:00
Eli Friedman
4f856744e5
PR3853: Add CodeGen support for __thread.
...
llvm-svn: 69545
2009-04-19 21:05:03 +00:00
Chris Lattner
1c1a00cf51
move token paste poisoning diagnostics to after the instantiation loc
...
for a token is set, this makes the diagnostic "expanded from stack" work
for this diagnostic. Add a testcase for PR3918.
llvm-svn: 69544
2009-04-19 20:29:42 +00:00
Eli Friedman
d5c0eeda72
Add more thorough/correct checking for invalid __thread specifiers.
...
llvm-svn: 69542
2009-04-19 20:27:55 +00:00
Eli Friedman
fe92e701aa
Silence gcc warning.
...
llvm-svn: 69541
2009-04-19 20:21:56 +00:00
Chris Lattner
da4ebb8921
Fix PR3918: Invalid use of __VA_ARGS__ not diagnosed,
...
by rejecting invalid poisoned tokens in the token
pasting path.
llvm-svn: 69536
2009-04-19 20:06:32 +00:00
Sebastian Redl
3b7ef5e374
Another piece of the conditional operator puzzle. We'll want to use FindCompositePointerType in some other places, too.
...
llvm-svn: 69534
2009-04-19 19:26:31 +00:00
Chris Lattner
249c38bb02
Fix PR4006, incorrect handling of __VA_ARGS__ when it was the first token
...
in a function-like macro body. This has the added bonus of moving some
function-like macro specific code out of the object-like macro codepath.
llvm-svn: 69530
2009-04-19 18:26:34 +00:00
Chris Lattner
6df41af7fb
actually just do this on all x86 targets, it won't hurt
...
non-glibc ones.
llvm-svn: 69528
2009-04-19 17:32:33 +00:00
Chris Lattner
4997b8ef98
Define __NO_MATH_INLINES on linux/x86 so that we don't get inline
...
functions in glibc header files that use FP Stack inline asm which the
backend can't deal with (PR879).
This "fixes" PR3970 for linux. Other affected systems should do similar
things. Maybe this should just go to the general i386/x86-64 sections?
llvm-svn: 69527
2009-04-19 17:29:50 +00:00
Chris Lattner
29d34cabc5
implement compiler support for -fno-diagnostics-fixit-info,
...
rdar://6805442
llvm-svn: 69525
2009-04-19 07:44:08 +00:00
Chris Lattner
5f65cc8215
silence a warning, it isn't clear what the right answer is here,
...
will talk to steve.
llvm-svn: 69519
2009-04-19 06:59:18 +00:00
Chris Lattner
96adcd5e74
silence a warning, I need to talk to Devang about this code.
...
llvm-svn: 69517
2009-04-19 06:50:29 +00:00
Chris Lattner
b433b279f3
Fix rdar://6804402 - crash on objc implementations declared with
...
@class but no implementation. This was broken in all 3 runtime
impls.
llvm-svn: 69512
2009-04-19 06:02:28 +00:00
Chris Lattner
4e1f0c6757
rearrange #include order.
...
llvm-svn: 69511
2009-04-19 05:30:08 +00:00
Chris Lattner
45542ea107
run the jump checker on blocks, even though they don't have gotos,
...
they do allow switches.
llvm-svn: 69510
2009-04-19 05:28:12 +00:00
Chris Lattner
9fecd743ca
add a new Sema::CurFunctionNeedsScopeChecking bool that is used to avoid
...
calling into the jump checker when a function or method is known to contain
no VLAs or @try blocks.
llvm-svn: 69509
2009-04-19 05:21:20 +00:00
Chris Lattner
1a1fdbd75d
move jump scope checking and related code out into its own file, SemaDecl.cpp is
...
already too large.
llvm-svn: 69505
2009-04-19 04:46:21 +00:00
Daniel Dunbar
9a7a78b0ae
Fix bug in computation of ivar offsets for (adjacent) bitfields.
...
- The confusing IRgen bitfield interface is partly to blame here;
fixing the functional error for now, cleanups to the interface to
follow.
llvm-svn: 69503
2009-04-19 02:03:42 +00:00
Chris Lattner
cd3bb8f7e4
revert david's patch, which causes a testsuite failure.
...
llvm-svn: 69501
2009-04-19 01:33:30 +00:00
Chris Lattner
cc6892e336
rewrite an O(N^2) algorithm to be O(n).
...
llvm-svn: 69500
2009-04-19 01:32:00 +00:00
Chris Lattner
c67540501f
second half of indirect jump checking: make sure that any
...
address taken labels are in function scope
llvm-svn: 69499
2009-04-19 01:16:06 +00:00
Chris Lattner
0bf2dd2ed4
First half of jump scope checking for indirect goto.
...
llvm-svn: 69498
2009-04-19 01:05:26 +00:00
Chris Lattner
34d9a51892
Add location info for indirect goto.
...
llvm-svn: 69497
2009-04-19 01:04:21 +00:00
Daniel Dunbar
bf90b33665
Reuse ObjcIvarOffsetVariable instead of duplicating code.
...
- No functionality change (but added a FIXME).
llvm-svn: 69496
2009-04-19 00:44:02 +00:00
Daniel Dunbar
a106052090
Remove some unnecessary complexity.
...
- No functionality change.
llvm-svn: 69495
2009-04-19 00:31:15 +00:00
Chris Lattner
c1b96c3590
"This patch fixes message sends to super in class methods for the GNU runtime (currently an instance method lookup is being performed)."
...
Patch by David Chisnall!
llvm-svn: 69493
2009-04-18 23:12:40 +00:00
Chris Lattner
f7fcb516de
reimplement DeclStmt handling so that we correctly handle intermixed
...
VLA's and statement expressions.
llvm-svn: 69491
2009-04-18 23:01:20 +00:00
Chris Lattner
508253d64b
the scope checker does work with objc methods, add testcase.
...
llvm-svn: 69487
2009-04-18 22:37:38 +00:00
Chris Lattner
b6e368235a
I didn't understand how @catches were chained. Now that I get it, fix
...
the scope checker to not think @catches are nested in each other, eliminating
some bogus notes.
llvm-svn: 69486
2009-04-18 22:35:34 +00:00
Chris Lattner
bf78da7b36
Fix PR3917: the location of a #line directive is the location of the first _.
...
llvm-svn: 69485
2009-04-18 22:29:33 +00:00
Chris Lattner
93017cc12a
Change Preprocessor::AdvanceToTokenCharacter to stop at
...
the first real character of a token. For example, advancing
to byte 3 of foo\
bar
should stop at the b, not the \.
llvm-svn: 69484
2009-04-18 22:28:58 +00:00
Chris Lattner
38b2cde4c4
add a new Lexer::SkipEscapedNewLines method.
...
llvm-svn: 69483
2009-04-18 22:27:02 +00:00
Chris Lattner
fbce7aa1f4
factor escape newline measuring out into its own helper function.
...
llvm-svn: 69482
2009-04-18 22:05:41 +00:00
Chris Lattner
dfbfc44df7
remove unneeded scopes.
...
llvm-svn: 69481
2009-04-18 21:57:20 +00:00
Chris Lattner
637652d959
forgot to commit this before.
...
llvm-svn: 69480
2009-04-18 21:55:17 +00:00
Chris Lattner
397ca4a9ef
fix typo
...
llvm-svn: 69479
2009-04-18 21:55:02 +00:00
Chris Lattner
5c926f3660
reject invalid jumps among pieces of @try blocks. This seems to work
...
reasonably well except for the problem that @catches are nested within
each other in the AST, giving the ugly diagnostics in L8.
llvm-svn: 69477
2009-04-18 21:28:52 +00:00
Chris Lattner
1d4fc1bc6d
unconditionally check for goto correctness. This is because switch
...
statements don't end up in the LabelMap so we don't have a quick way
to filter them. We could add state to Sema (a "has vla" and "has
jump" bit) to try to filter this out, but that would be sort of gross
and I'm not convinced it is the best way. Thoughts welcome.
llvm-svn: 69476
2009-04-18 21:00:42 +00:00
Anders Carlsson
623dcae172
Use EmitCallArgs in EmitObjCMessageExpr.
...
llvm-svn: 69471
2009-04-18 20:29:27 +00:00
Anders Carlsson
603d6aff8b
Make CodeGenFunction::EmitCallArgs a template function that takes a generic "Type Info" parameter. The type info parameter knows how to iterate over its arguments.
...
llvm-svn: 69469
2009-04-18 20:20:22 +00:00
Chris Lattner
96b3139773
abstract the SwitchStack for blocks just like we do the goto labels.
...
This fixes a crash on invalid (test10). rdar://6805469
llvm-svn: 69465
2009-04-18 20:10:59 +00:00
Chris Lattner
f95894c1d2
fix two error paths out of ParseBlockLiteralExpression to
...
call ActOnBlockError so that CurBlock gets popped. This
fixes a crash on test/block-syntax-error.c when this new
assertion is enabled.
llvm-svn: 69464
2009-04-18 20:05:34 +00:00
Chris Lattner
3318e86541
refactor some code, adding a new getLabelMap() accessor method
...
so that clients can't poke the function-local one when they really
want the current block label. No functionality change.
llvm-svn: 69463
2009-04-18 20:01:55 +00:00
Chris Lattner
36dec99d12
Improve switch diagnostic to emit the "jump" message on the
...
specific bad case instead of on the switch. Putting it on the
switch means you don't know what case is the problem. For
example:
scope-check.c:54:3: error: illegal switch case into protected scope
case 2:
^
scope-check.c:53:9: note: jump bypasses initialization of variable length array
int a[x];
^
llvm-svn: 69462
2009-04-18 19:50:02 +00:00
Chris Lattner
7535f41c66
first step to getting switches giving "jump into vla scope" errors.
...
llvm-svn: 69461
2009-04-18 19:42:37 +00:00
Chris Lattner
ca4dc2e1ea
fix error recovery in the case of a jump to a label with no definition
...
to create a well formed AST instead of a dangling pointer. This resolves
several fixme's.
llvm-svn: 69459
2009-04-18 19:30:02 +00:00
Chris Lattner
61639745b6
glibc plays some weird games with multiple different definitions of
...
int8_t and games it with strange *_defined macros. Emulate its weirdness
for better compatibility with linux etc. Problem pointed out by anders
johnson.
llvm-svn: 69458
2009-04-18 19:11:11 +00:00
Chris Lattner
d66f172ab1
more fun with line markers: the digit string is required to be interpreted
...
as decimal, even if it starts with 0. Also, since things like 0x1 are
completely illegal, don't even bother using numericliteralparser for them.
llvm-svn: 69454
2009-04-18 18:35:15 +00:00
Douglas Gregor
13d190ffbc
Don't emit name-lookup tables for functions or methods in the PCH files
...
llvm-svn: 69449
2009-04-18 15:49:20 +00:00
Chris Lattner
960cc525ec
rewrite the goto scope checking code to be more efficient, simpler,
...
produce better diagnostics, and be more correct in ObjC cases (fixing
rdar://6803963).
An example is that we now diagnose:
int test1(int x) {
goto L;
int a[x];
int b[x];
L:
return sizeof a;
}
with:
scope-check.c:15:3: error: illegal goto into protected scope
goto L;
^
scope-check.c:17:7: note: scope created by variable length array
int b[x];
^
scope-check.c:16:7: note: scope created by variable length array
int a[x];
^
instead of just saying "invalid jump". An ObjC example is:
void test1() {
goto L;
@try {
L: ;
} @finally {
}
}
t.m:6:3: error: illegal goto into protected scope
goto L;
^
t.m:7:3: note: scope created by @try block
@try {
^
There are a whole ton of fixme's for stuff to do, but I believe that this
is a monotonic improvement over what we had.
llvm-svn: 69437
2009-04-18 09:36:27 +00:00
Daniel Dunbar
41595d43d5
Use getAsPointerType instead of using getCanonicalType directly.
...
- <rdar://problem/6803995>
llvm-svn: 69435
2009-04-18 08:54:40 +00:00
Daniel Dunbar
508a7dda4a
Fix a bug found by inspection, class/meta references could be emitted
...
into the wrong section (they shared the same lookup table).
llvm-svn: 69433
2009-04-18 08:51:00 +00:00
Chris Lattner
7a845306aa
don't evaluate ->child_end() every time through the loop, or *i frequently within it.
...
llvm-svn: 69431
2009-04-18 07:53:55 +00:00
Chris Lattner
9512c2fb77
split code out into a new CheckFunctionJumpScopes routine,
...
add some comments, change type from void* -> Stmt*, use
smallvector instead of vector.
llvm-svn: 69430
2009-04-18 07:47:21 +00:00
Chris Lattner
40cc0044e7
make scope checking be static functions instead of sema methods.
...
llvm-svn: 69429
2009-04-18 07:36:39 +00:00
Chris Lattner
c2e868fd14
fix incorrect lowering of __builtin_ia32_shufpd, rdar://6803924
...
llvm-svn: 69428
2009-04-18 07:01:54 +00:00
Chris Lattner
35dd5056fc
fix PR3927 by being more careful about the pp test for identifier.
...
llvm-svn: 69423
2009-04-18 06:44:18 +00:00
Chris Lattner
5ca5d40cf4
second half of PR3940: #line requires simple digit sequence.
...
llvm-svn: 69422
2009-04-18 06:38:24 +00:00
Douglas Gregor
652d82a096
Store the type ID for __builtin_va_list in the PCH file, so that the
...
AST context's __builtin_va_list type will be set when the PCH file is
loaded. This fixes the crash when CodeGen'ing a va_arg expression
pulled in from a PCH file.
llvm-svn: 69421
2009-04-18 05:55:16 +00:00
Chris Lattner
2425bcb49a
enforce requirements imposed by C90 6.8 TC1, fixing PR3919.
...
llvm-svn: 69415
2009-04-18 02:23:25 +00:00
Chris Lattner
bc63de144f
Fix PR3938 by taking into account C99 6.10p4.
...
llvm-svn: 69413
2009-04-18 01:34:22 +00:00
Chris Lattner
c17925da61
Substantially restructure function-like macro argument parsing.
...
Highlights: PP::isNextPPTokenLParen() no longer eats the (
when present. We now simplify slightly the logic parsing
macro arguments. We now handle PR3937 and other related cases
correctly.
llvm-svn: 69411
2009-04-18 01:13:56 +00:00
Douglas Gregor
111af7d7b4
Preliminary PCH support in the driver
...
llvm-svn: 69410
2009-04-18 00:34:01 +00:00
Douglas Gregor
3c3aa61758
Lazy deserialization of function bodies for PCH files. For the Carbon
...
"Hello, World!", this takes us from deserializing 6469
statements/expressions down to deserializing 1
statement/expression. It only translated into a 1% improvement on the
Carbon-prefixed 403.gcc, but (a) it's the right thing to do, and (b)
we expect this to matter more once we lazily deserialize identifiers.
llvm-svn: 69407
2009-04-18 00:07:54 +00:00
Douglas Gregor
e3dcb2ddd1
FunctionDecl::getBody() is getting an ASTContext argument for use in
...
lazy PCH deserialization. Propagate that argument wherever it needs to
be. No functionality change, except that I've tightened up a few PCH
tests in preparation.
llvm-svn: 69406
2009-04-18 00:02:19 +00:00
Chris Lattner
b40289b2b8
Fix two problems from PR3916, and one problem I noticed while hacking
...
on the code.
llvm-svn: 69404
2009-04-17 23:56:52 +00:00
Chris Lattner
ca556cb3e3
implement PR3940: #line numbers not fully checked
...
llvm-svn: 69403
2009-04-17 23:37:49 +00:00
Chris Lattner
0003c27f5e
#line is allowed to have macros that expand to nothing after them.
...
llvm-svn: 69401
2009-04-17 23:30:53 +00:00
Douglas Gregor
08f0129003
Keep track of the number of statements/expressions written to and read
...
from a PCH file. It turns out that "Hello, World!" is bringing in 19%
of all of the statements in Carbon.h, so we need to be lazy.
llvm-svn: 69393
2009-04-17 22:13:46 +00:00
Chris Lattner
6fdd57cba8
fix a crash compiling code with its own definition of objc_assign_weak.
...
rdar://6800430
llvm-svn: 69392
2009-04-17 22:12:36 +00:00
Chris Lattner
2581fc3fa9
tweak redefinition of a typedef a bit to fix a couple of problems:
...
1. We had logic in sema to decide whether or not to emit the error
based on manually checking whether in a system header file.
2. we were allowing redefinitions of typedefs in class scope in C++
if in header file.
3. there was no way to force typedef redefinitions to be accepted
by the C compiler, which annoys me when stripping linemarkers out
of .i files.
The fix is to split the C++ class typedef redefinition path from the
C path, and change the C path to be a warning that normally maps to
error. This causes it to properly be ignored in system headers,
etc. and gives us a way to control it. Passing
-Wtypedef-redefinition now turns the error into a warning.
One behavior change is that we now diagnose cases where you redefine
a typedef in your .c file that was defined in a header file. This
seems like reasonable behavior, and the diagnostic now indicates that
it can be controlled with -Wtypedef-redefinition.
llvm-svn: 69391
2009-04-17 22:04:20 +00:00
Douglas Gregor
ba6e557378
Fix two embarrassing PCH bugs:
...
1) Accidentally used delete [] on an array of statements that was allocated with ASTContext's allocator
2) Deserialization of names with multiple declarations (e.g., a struct and a function) used the wrong mangling constant, causing it to view declaration IDs as Decl*s.
403.gcc builds and links properly.
llvm-svn: 69390
2009-04-17 21:46:47 +00:00
Devang Patel
12f0dea922
Use PresumedLoc to record line number in debug info entries.
...
llvm-svn: 69389
2009-04-17 21:35:15 +00:00
Daniel Dunbar
66b13dac0a
Don't put msgrefs in used globals (in particular, we don't want
...
no-dead-strip set on them).
llvm-svn: 69388
2009-04-17 21:10:58 +00:00
Devang Patel
75009454e3
Appropriately set file name and directory name in debug info compile units.
...
llvm-svn: 69387
2009-04-17 21:06:59 +00:00
Douglas Gregor
f994f062fd
PCH support for inline assembly statements.
...
This completes support for all of C (+ extensions). We can (again)
build a PCH file for Carbon.h.
llvm-svn: 69385
2009-04-17 20:57:14 +00:00
Chris Lattner
25ef69a36e
refactor htmldiags to be created up front like the other diag clients.
...
llvm-svn: 69379
2009-04-17 20:40:01 +00:00
Douglas Gregor
5ceb1a2dd9
PCH tests for va_arg expressions. Verified that the blocks test does create a BlockDeclRefExpr
...
llvm-svn: 69376
2009-04-17 20:06:59 +00:00
Chris Lattner
fbbf539c45
fix a crash on invalid by making ActOnDeclarator create decl with
...
a dummy *function* type when it is recovering and knows it needs
a function. rdar://6802350 - clang crash on invalid input
llvm-svn: 69374
2009-04-17 19:32:54 +00:00
Douglas Gregor
c95701da6c
PCH support for blocks
...
llvm-svn: 69373
2009-04-17 19:21:43 +00:00
Douglas Gregor
af97671954
PCH support for GNU statement expressions
...
llvm-svn: 69370
2009-04-17 19:05:30 +00:00
Douglas Gregor
779d865b48
PCH support for indirect gotos and address-of-label expressions.
...
llvm-svn: 69369
2009-04-17 18:58:21 +00:00
Douglas Gregor
6cc68a47b5
PCH support for labels and goto.
...
llvm-svn: 69364
2009-04-17 18:18:49 +00:00
Chris Lattner
ff8a9e6ee4
fix misspelt attribute.
...
llvm-svn: 69362
2009-04-17 17:55:23 +00:00
Chris Lattner
10dae30049
Fix rdar://6800926 - crash compiling non-fragile _Bool bitfield ivar,
...
the functional change here is changing ConvertType -> ConvertTypeForMem
so that we handle i1 fields properly as memory.
llvm-svn: 69361
2009-04-17 17:46:19 +00:00
Chris Lattner
c4688d21f7
tidy some code.
...
llvm-svn: 69360
2009-04-17 17:44:48 +00:00
Douglas Gregor
915b6c663d
PCH support for declaration statements, and a test for PredefinedExpr
...
llvm-svn: 69356
2009-04-17 16:55:36 +00:00
Douglas Gregor
f961e5921f
PCH support for return statements.
...
Optimize PCH encoding for switch-case statements slightly, by making
the switch-case numbering local to a particular statement.
llvm-svn: 69355
2009-04-17 16:34:57 +00:00
Sebastian Redl
5775af1afd
Implement lvalue test for conditional expressions.
...
Add a few commented lines to the test case that point out things that don't work yet.
llvm-svn: 69354
2009-04-17 16:30:52 +00:00
Fariborz Jahanian
493d4e080d
Added -print-ivar-layout option. No change in functionality
...
yet.
llvm-svn: 69346
2009-04-17 03:04:15 +00:00
Anders Carlsson
6dc3575220
Add support for the __has_trivial_destructor type trait.
...
llvm-svn: 69345
2009-04-17 02:34:54 +00:00
Anders Carlsson
eaa28f7e18
Add support for generating (very basic) C++ destructors. These aren't called by anything yet.
...
llvm-svn: 69343
2009-04-17 01:58:57 +00:00
Daniel Dunbar
c3e7cff6d3
Attributes on block functions were not being set.
...
- <rdar://problem/6800351> clang not producing correct large struct
return code for Blocks
llvm-svn: 69337
2009-04-17 00:48:04 +00:00
Douglas Gregor
71517c47e6
PCH support for do-while and for loops
...
llvm-svn: 69334
2009-04-17 00:29:51 +00:00
Douglas Gregor
e24cbc0f4b
PCH support for while and continue statements
...
llvm-svn: 69332
2009-04-17 00:16:09 +00:00
Mike Stump
5c3285b6fb
Fixup semantic analysis for nested blocks, and allow block literal
...
expressions that can be of static duration to be returned.
Radar 6786551
llvm-svn: 69331
2009-04-17 00:09:41 +00:00
Anders Carlsson
b7f8f594f3
Implement basic code generation of constructor calls. We can now compile:
...
struct S {
S(int, int);
};
void f() {
S s(10, 10);
}
llvm-svn: 69330
2009-04-17 00:06:03 +00:00
Douglas Gregor
a9af1d13da
PCH support for the first batch of statements, including null,
...
compound, case, default, if, switch, and break statements.
llvm-svn: 69329
2009-04-17 00:04:06 +00:00
Anders Carlsson
e8eeffdf16
Add GetAddrOfCXXConstructor and use it.
...
llvm-svn: 69328
2009-04-16 23:57:24 +00:00
Anders Carlsson
e6840d84df
If a class has a non-trivial constructor that doesn't take any arguments, we will now make an implicit CXXTemporaryObjectExpr. So
...
struct S {
S();
};
void f() {
S s;
}
's' here will implicitly be declared as.
S s = S();
llvm-svn: 69326
2009-04-16 23:50:50 +00:00
Daniel Dunbar
f2df7c283f
Driver: Allow using clang as a precompiler, even if it is an
...
unsupported arch.
llvm-svn: 69322
2009-04-16 23:10:13 +00:00
Douglas Gregor
573b92468e
Clean up the declaration-decoding step in the PCH reader, using the
...
same ueber-easy visitor scheme used for expressions/statements.
llvm-svn: 69320
2009-04-16 22:29:51 +00:00
Douglas Gregor
8f45df58b3
Prepare PCH reader and writer for (de-)serialization of statements. No
...
functionality change.
llvm-svn: 69319
2009-04-16 22:23:12 +00:00
Fariborz Jahanian
68c4c61be8
Removed a no longer needed FIXME comment.
...
llvm-svn: 69315
2009-04-16 21:49:16 +00:00
Steve Naroff
a0c32704e2
Fix <rdar://problem/6765383> clang-6: clang does not appear to support declaring a static Block 'const'.
...
llvm-svn: 69306
2009-04-16 19:02:57 +00:00
Fariborz Jahanian
bcf548760e
Category method synbols must be qualified by gategory name to
...
match gcc's.
llvm-svn: 69305
2009-04-16 18:34:20 +00:00
Sebastian Redl
1a99f441e6
Fix a crash bug when comparing overload quality of conversion operators with conversion constructors.
...
Remove an atrocious amount of trailing whitespace in the overloaded operator mangler. Sorry, couldn't help myself.
Change the DeclType parameter of Sema::CheckReferenceInit to be passed by value instead of reference. It wasn't changed anywhere.
Let the parser handle C++'s irregular grammar around assignment-expression and conditional-expression.
And finally, the reason for all this stuff: implement C++ semantics for the conditional operator. The implementation is complete except for determining lvalueness.
llvm-svn: 69299
2009-04-16 17:51:27 +00:00
Eli Friedman
8d25b096fa
Attempt to fix a read-after-free running test/Sema/designated-initializers.c.
...
Douglas, can you check that this is doing the right thing?
llvm-svn: 69298
2009-04-16 17:49:48 +00:00
Anders Carlsson
8798bd1bf9
When we create an implicit CXXTemporaryObjectExpr we don't need to check that it's a valid init. Instead, just set it as the VarDecl's initializer.
...
llvm-svn: 69292
2009-04-16 15:50:16 +00:00
Daniel Dunbar
426b5cf16a
Ensure that the most recent declaration of a tentative definition wins
...
when generating a common definition.
llvm-svn: 69287
2009-04-16 15:34:14 +00:00
Daniel Dunbar
092f0ccd9c
Pass -fdiagnostics-show-option to clang-cc by default.
...
- <rdar://problem/6796848> implement -fdiagnostics-show-option
llvm-svn: 69276
2009-04-16 06:32:38 +00:00
Chris Lattner
2d49eed816
optimize and comment GetDiagInfo.
...
llvm-svn: 69273
2009-04-16 06:13:46 +00:00
Chris Lattner
6c440329f1
merge several scattered tables into StaticDiagInfo.
...
llvm-svn: 69272
2009-04-16 06:07:15 +00:00
Chris Lattner
6a64cc6776
Implement Diagnostic::getWarningOptionForDiag with information from tblgen,
...
this implements -fdiagnostics-show-option in clang-cc.
llvm-svn: 69271
2009-04-16 06:00:24 +00:00
Chris Lattner
a538967177
tblgen is now passing diagnostic group information in the .inc file, ignore it everywhere.
...
llvm-svn: 69269
2009-04-16 05:52:14 +00:00
Chris Lattner
22cb818913
implement framework for -fdiagnostics-show-option, but tblgen isn't
...
passing down the right info yet.
llvm-svn: 69268
2009-04-16 05:44:38 +00:00
Anders Carlsson
805ab5a746
Disable the code I added before until I understand what's causing default2.cpp to fail.
...
llvm-svn: 69267
2009-04-16 05:35:41 +00:00
Chris Lattner
b8e73158e1
move handling of -pedantic and -pedantic-errors into Diagnostics,
...
out of Warnings.cpp. This simplifies warnings.cpp and makes it more
efficient.
llvm-svn: 69266
2009-04-16 05:04:32 +00:00
Chris Lattner
f9150bac01
arrange for -Wno-error=foo warnings to be immune to -Werror as
...
they are supposed to be.
llvm-svn: 69265
2009-04-16 04:32:54 +00:00
Chris Lattner
411c0ffe5d
change mappings to distinguish between "unset", "set by the user" and
...
"set to the default value".
llvm-svn: 69264
2009-04-16 04:12:40 +00:00
Chris Lattner
af73cf6363
use getDiagnosticLevel instead of getDiagnosticMapping, which
...
is about to become private.
llvm-svn: 69262
2009-04-16 03:59:32 +00:00
Daniel Dunbar
b4b3709c5b
Driver: Forward -W* to clang, it can handle all these itself now.
...
Remove clang_W_Group and clang_ignored_W_Group.
llvm-svn: 69261
2009-04-16 03:44:10 +00:00
Douglas Gregor
6d955a9d25
Eliminate pch::TYPE_ATTR, which is never used
...
llvm-svn: 69256
2009-04-16 02:45:14 +00:00
Douglas Gregor
4c5cd33527
PCH support for CompoundLiteralExpr. This is the last C expression
...
that does not require PCH support for statements. Only AddrLabelExpr,
StmtExpr, and BlockExpr remain (for C).
llvm-svn: 69255
2009-04-16 02:33:48 +00:00
Douglas Gregor
38676d50dc
PCH support for InitListExpr, DesignatedInitExpr, and ImplicitValueInitExpr.
...
llvm-svn: 69251
2009-04-16 00:55:48 +00:00
Anders Carlsson
fe63dc52f9
Add support for the __has_trivial_constructor type trait.
...
llvm-svn: 69245
2009-04-16 00:08:20 +00:00
Douglas Gregor
a3c5590ec2
PCH support for ShuffleVectorExpr and BlockDeclRefExpr
...
llvm-svn: 69244
2009-04-16 00:01:45 +00:00
Douglas Gregor
8693ec4e58
PCH support for TypesCompatibleExpr, ChooseExpr, and GNUNullExpr.
...
llvm-svn: 69242
2009-04-15 23:33:31 +00:00
Douglas Gregor
2ebf8717a5
PCH support for ExtVectorElementExpr and VAArgExpr.
...
llvm-svn: 69240
2009-04-15 23:02:49 +00:00
Douglas Gregor
d4ed114e23
PCH support for CompoundAssignOperator and ConditionalOperator
...
llvm-svn: 69237
2009-04-15 22:40:36 +00:00
Douglas Gregor
978887b6b0
PCH support for ImaginaryLiteral and ArraySubscriptExpr
...
llvm-svn: 69233
2009-04-15 22:19:53 +00:00
Mike Stump
3b65ac2696
Fixup codegen for copy/dispose for block literals. Radar 6791245
...
llvm-svn: 69232
2009-04-15 22:11:36 +00:00
Daniel Dunbar
7dd749e6fd
Defer generation of tentative definitions.
...
- PR3980.
- <rdar://problem/6762287> [irgen] crash when generating tentative
definition of incomplete structure
- This also avoids creating common definitions for things which are
later overwritten.
- XFAIL'ed external-defs.c, it isn't completing types properly yet.
llvm-svn: 69231
2009-04-15 22:08:45 +00:00
Douglas Gregor
455b8f4106
PCH support for ExtQualType
...
llvm-svn: 69230
2009-04-15 22:00:08 +00:00
Fariborz Jahanian
3453f7d410
Fix decl type merges when they have
...
__string/__weak attributes.
llvm-svn: 69229
2009-04-15 21:54:48 +00:00
Devang Patel
9074ed8c6a
Set DebugInfo at the beginning of GenerateBlockFunction().
...
llvm-svn: 69228
2009-04-15 21:51:44 +00:00
Anders Carlsson
332ef55cf2
When declaring a variable that has a constructor and a direct initializer, for example:
...
struct X {
X(int, int);
};
X x(10, 10);
we model that as
X x = X(10, 10);
inserting a temporary object expr.
llvm-svn: 69227
2009-04-15 21:48:18 +00:00
Daniel Dunbar
c7ba533378
Add warning when a tentative array definition is assumed to have one element.
...
- Also, fixed one to actually be one (instead of zero). :)
llvm-svn: 69226
2009-04-15 21:35:27 +00:00
Douglas Gregor
bc8a78d5a4
PCH support for declaration attributes
...
llvm-svn: 69225
2009-04-15 21:30:51 +00:00
Anders Carlsson
617482c666
Actually generate code for the simple constructors we know we can generate code for.
...
llvm-svn: 69222
2009-04-15 21:02:13 +00:00
Daniel Dunbar
4b68d26a93
Don't use \01 in symbol name if unnecessary.
...
- This was particularly bad since I fixed one instance of this name
and not another, meaning we got an LLVM module with the same
effective name in two different globals!
llvm-svn: 69205
2009-04-15 19:52:32 +00:00
Steve Naroff
439a3e4106
Fix <rdar://problem/6786597> varargs not supported for Blocks under clang.
...
Teach Sema::SemaBuiltinVAStart() about blocks.
llvm-svn: 69201
2009-04-15 19:33:47 +00:00
Fariborz Jahanian
47b21081cb
Patch to remove a bogus warning which pointed to underlying AST
...
gen. issue for property in continuation class declared readwrite
but which did not generate the declaration for the setter. Fix also
removed a FIXME and resulted in code cleanup.
llvm-svn: 69200
2009-04-15 19:19:03 +00:00
Daniel Dunbar
24645c9ff4
Fix alignment on obj_msgrefs to match llvm-gcc.
...
llvm-svn: 69199
2009-04-15 19:04:46 +00:00
Daniel Dunbar
e60aa05d34
Add test case for superrefs section (and make spacing consistent).
...
llvm-svn: 69198
2009-04-15 19:03:14 +00:00
Chris Lattner
d9ecb8e279
fix some out of bounds array access problems, which manifest particularly
...
spectacularly when built for x86-64.
llvm-svn: 69197
2009-04-15 18:48:23 +00:00
Douglas Gregor
e95304ac93
PCH support for the string literal of a FileScopeAsmDecl.
...
Some minor cleanup.
llvm-svn: 69196
2009-04-15 18:43:11 +00:00
Douglas Gregor
8324327993
For source location entries that describe instantiations, encode the
...
token length in the PCH file rather than trying (and failing) to
reconstruct it be getting the spelling token's length.
llvm-svn: 69191
2009-04-15 18:05:10 +00:00
Douglas Gregor
e20a2e5fa3
PCH support for MemberExpr and CallExpr.
...
llvm-svn: 69186
2009-04-15 17:43:59 +00:00
Steve Naroff
bb99c5c933
Fixup http://llvm.org/viewvc/llvm-project?rev=69165&view=rev (based on feedback from Eli).
...
llvm-svn: 69184
2009-04-15 17:31:31 +00:00
Chris Lattner
2fe292076e
move {'s
...
llvm-svn: 69179
2009-04-15 17:13:42 +00:00
Steve Naroff
6f84266619
Revert previous patch (will commit a fix soon).
...
llvm-svn: 69178
2009-04-15 16:58:41 +00:00
Chris Lattner
e6c831deb2
Make diagnostic class explicit in the diag record instead of
...
implicit from its parenting. Now that diag mapping is
explicit, eliminate the fatal and extwarn classes.
llvm-svn: 69177
2009-04-15 16:56:26 +00:00
Chris Lattner
1b595624a8
Tblgen now passes the default mapping explicitly, instead of having it
...
be tied to the diag class. This requires an LLVM tree update.
llvm-svn: 69175
2009-04-15 16:44:12 +00:00
Douglas Gregor
958dfc9bbd
PCH support for string literals
...
llvm-svn: 69172
2009-04-15 16:35:07 +00:00
Daniel Dunbar
a7b5e219bb
Driver: Add --help-hidden
...
llvm-svn: 69171
2009-04-15 16:34:29 +00:00
Fariborz Jahanian
f5e8ddd550
__objc_superrefs belongs to __DATA segment.
...
llvm-svn: 69170
2009-04-15 16:31:36 +00:00
Douglas Gregor
0253c83610
PCH support for UnaryOperator, SizeOfAlignOfExpr
...
llvm-svn: 69169
2009-04-15 15:58:59 +00:00
Anders Carlsson
f747524819
Start attempting to generate code for C++ ctors.
...
llvm-svn: 69168
2009-04-15 15:55:24 +00:00
Steve Naroff
635168aa33
Fix <rdar://problem/6789707> "warning: 'extern' variable has an initializer" not correct for __private_extern__.
...
llvm-svn: 69167
2009-04-15 15:20:03 +00:00
Steve Naroff
fab0262047
Fix <rdar://problem/6791490> [clang10 regression] [sema] invalid illegal jump diagnostic.
...
caused by: <rdar://problem/6252084> [sema] jumps into Obj-C exception blocks should be disallowed.
Sema::RecursiveCalcLabelScopes() and Sema::RecursiveCalcJumpScopes() need to pop the ScopeStack within the statement iteration loop (was outside the loop).
Eli, please review (thanks).
llvm-svn: 69165
2009-04-15 14:38:36 +00:00
Chris Lattner
e007de3b9a
Rejigger how -pedantic and -pedantic-errors work and their interaction
...
with other diagnostic mapping. In the new scheme, -Wfoo or -Wno-foo or
-Werror=foo all override the -pedantic options, and __extension__
robustly silences all extension diagnostics in their scope.
An added bonus of this change is that MAP_DEFAULT goes away, meaning that
per-diagnostic mapping information can now be stored in 2 bits, doubling
the density of the Diagnostic::DiagMapping array. This also
substantially simplifies Diagnostic::getDiagnosticLevel.
OTOH, this temporarily introduces some "macro intensive" code in
Diagnostic.cpp. This will be addressed in a later patch.
llvm-svn: 69154
2009-04-15 07:01:18 +00:00
Douglas Gregor
d5846a1eb5
Implement support for designated initializers that refer to members of
...
anonymous structs or unions. Fixes PR3778.
llvm-svn: 69153
2009-04-15 06:41:24 +00:00
Anders Carlsson
e4c40c8baf
Add support for mangling C++ constructors. Review appreciated (I'm looking at you, Doug)
...
llvm-svn: 69150
2009-04-15 05:36:58 +00:00
Douglas Gregor
a532416d39
Switch designated-initializer checking from using designator iterators
...
to using designator indices. No functionality change.
llvm-svn: 69147
2009-04-15 04:56:10 +00:00
Douglas Gregor
534b6f27a0
Don't tip-to around BitstreamReader::JumpToBit jumping to the end of the stream. LLVM has been updated to allow this
...
llvm-svn: 69146
2009-04-15 04:54:29 +00:00
Anders Carlsson
375d6beb6c
Add CGCXX.h with ctor/dtor type enumerations. No functionality change.
...
llvm-svn: 69137
2009-04-15 04:36:55 +00:00
Anders Carlsson
c483bd0724
Simplify CodeGenFunction::GenerateCode.
...
llvm-svn: 69134
2009-04-15 04:10:19 +00:00
Daniel Dunbar
b25452a98e
Tweaks to Objective-C metadata (32 & 64-bit) to match llvm-gcc.
...
- Set alignment on property lists.
- 32-bit:
o Set section on property lists.
o Fix section name for category class methods.
o Fix symbol name for property lists.
o Fix section name for class method.
o Set alignment and section on class extension structure.
o Set alignment on a number of things: instance variables, methods,
method descriptions, the symbols structure.
- 64-bit:
o Fix section flags for protocol list.
I doubt most of these were problems in practice, but it is nice to
match llvm-gcc.
llvm-svn: 69132
2009-04-15 02:56:18 +00:00
Daniel Dunbar
2edd923c90
Driver: For clang, accept -fsigned-bitfields and reject
...
-funsigned-bitfields for now (clang defaults to -fsigned-bitfields).
- <rdar://problem/6790309> ER: Support
-fsigned-bitfields/-funsigned-bitfields
llvm-svn: 69131
2009-04-15 02:37:43 +00:00
Douglas Gregor
67fdb085b9
PCH support for CStyleCastExpr and BinaryOperator expression kinds.
...
llvm-svn: 69119
2009-04-15 00:25:59 +00:00
Daniel Dunbar
c2223ab255
Improve "assignment to cast" diagnostic.
...
- Strip off extra parens when looking for casts.
- Change the location info to point at the cast (instead of the
assignment).
For example, on
int *b;
#define a ((void*) b)
void f0() {
a = 10;
}
we now emit:
/tmp/t.c:4:3: error: assignment to cast is illegal, lvalue casts are not supported
a = 10;
^ ~
/tmp/t.c:2:12: note: instantiated from:
#define a ((void*) b)
~^~~~~~~~~~
instead of:
/tmp/t.c:4:5: error: expression is not assignable
a = 10;
~ ^
llvm-svn: 69114
2009-04-15 00:08:05 +00:00
Douglas Gregor
954a830eca
PCH support for ParenExpr
...
llvm-svn: 69106
2009-04-14 23:59:37 +00:00
Douglas Gregor
f0b575f79d
Add PCH support for ImplicitCastExprs. This is the first expression
...
kind PCH handles that has an expression as an operand, so most of this
work is in the infrastructure to rebuild expression trees from the
serialized representation. We now store expressions in post-order
(e.g., Reverse Polish Notation), so that we can easily rebuild the
appropriate expression tree.
llvm-svn: 69101
2009-04-14 23:32:43 +00:00
Daniel Dunbar
9351c02bef
Strip paren expressions when trying to diagnose "cast as lvalue"
...
extension.
llvm-svn: 69100
2009-04-14 23:26:44 +00:00
Chris Lattner
184e65d363
Change Lexer::MeasureTokenLength to take a LangOptions reference.
...
This allows it to accurately measure tokens, so that we get:
t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~~^
instead of the woefully inferior:
t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~ ^
Most of this is just plumbing to push the reference around.
llvm-svn: 69099
2009-04-14 23:22:57 +00:00
Fariborz Jahanian
6c6aea914a
Diagnose properties which have no implementations;
...
either unimplemented setter/getter or no
implementation directive.
llvm-svn: 69098
2009-04-14 23:15:21 +00:00
Daniel Dunbar
3241fae46c
Set alignment on __cstring metadata variables to 1 (matching
...
llvm-gcc).
llvm-svn: 69097
2009-04-14 23:14:47 +00:00
Daniel Dunbar
729df96bf5
Avoid use of magic \01 prefix when unneeded.
...
llvm-svn: 69093
2009-04-14 22:44:26 +00:00
Daniel Dunbar
346892aafc
Comment fix.
...
llvm-svn: 69091
2009-04-14 22:41:13 +00:00
Chris Lattner
b4a8fe8dcc
Make the implicit-int handling error recovery stuff handle C++
...
nested name specifiers. Now we emit stuff like:
t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~ ^
instead of:
t.cpp:8:16: error: invalid token after top level declarator
static foo::X P;
^
This is inspired by a really awful error message I got from
g++ when I misspelt diag::kind as diag::Kind.
llvm-svn: 69086
2009-04-14 22:17:06 +00:00
Douglas Gregor
e0a3a51637
Add PCH support for PredefinedExpr and FloatingLiteral expressions
...
llvm-svn: 69084
2009-04-14 21:55:33 +00:00
Chris Lattner
20a0c61487
refactor "implicit int error recovery" code out of
...
ParseDeclarationSpecifiers into its own function, no
functionality change.
llvm-svn: 69083
2009-04-14 21:34:55 +00:00
Douglas Gregor
feb84b0074
PCH support for a few very, very simple kinds of expressions. Hook up
...
expression (de-)serialization for VLAs, variable initializers,
enum constant initializers, and bitfield widths.
llvm-svn: 69075
2009-04-14 21:18:50 +00:00
Chris Lattner
a723ba97db
Fix a regression in a previous patch that broke implicit
...
int in a bitfield. Shantonu found this in a gcc testsuite file.
llvm-svn: 69074
2009-04-14 21:16:09 +00:00
Steve Naroff
5196c618fb
Fix <rdar://problem/6252084> [sema] jumps into Obj-C exception blocks should be disallowed.
...
This builds on Eli's work from http://llvm.org/viewvc/llvm-project?view=rev&revision=65678 .
llvm-svn: 69073
2009-04-14 20:53:38 +00:00
Chris Lattner
28549de12c
remove dead enum
...
llvm-svn: 69070
2009-04-14 20:30:29 +00:00
Chris Lattner
bae0e68930
Fix PR3988: extern inline functions get strong symbol definitions in
...
C99 mode. This is a regression from an earlier patch of mine.
This also simplifies the linkage enums a bit.
llvm-svn: 69069
2009-04-14 20:25:53 +00:00
Fariborz Jahanian
899e7eb6c7
Do not dead code strip global meta-data objects.
...
This will match gcc's behavior in the arena.
llvm-svn: 69061
2009-04-14 18:41:56 +00:00
Mike Stump
d73e4419f5
Fixup whitespacing.
...
llvm-svn: 69055
2009-04-14 18:24:37 +00:00
Chris Lattner
66037791b1
temporarily revert r69046
...
llvm-svn: 69054
2009-04-14 18:05:08 +00:00
Daniel Dunbar
4527d30c3d
Fix comment.
...
llvm-svn: 69053
2009-04-14 17:42:51 +00:00
Chris Lattner
4225e23e62
implement some sema for gnuc_inline attribute. Reject always_inline and no_inline on objc methods.
...
llvm-svn: 69051
2009-04-14 17:02:11 +00:00
Anders Carlsson
a5d077df73
Support code generation of 'this' exprs
...
llvm-svn: 69050
2009-04-14 16:58:56 +00:00
Sanjiv Gupta
69650b099a
Literal value calculation isn't likely to overflow on targets having int as 32 or less. Fixing the assert as it otherwise triggers for PIC16 which as i16 as int.
...
llvm-svn: 69046
2009-04-14 16:46:37 +00:00
Chris Lattner
02e987f3e8
implement codegen support for __attribute((__gnuc_inline__)),
...
pulling some attribute munging stuff into GetLinkageForFunction.
This should fix PR3986
llvm-svn: 69045
2009-04-14 16:44:36 +00:00
Chris Lattner
eaad6b70a9
recognize the gnuc_inline attribute.
...
llvm-svn: 69044
2009-04-14 16:30:50 +00:00