David Majnemer
4101621dd7
Sema: Cleanup and simplify anonymous union diagnostics
...
The determination of which diagnostics would be issued for certain
anonymous unions started to get a little ridiculous. Clean this up by
inverting the condition-tree's logic from dialect -> issue to
issue -> diagnostic.
As part of this cleanup, move ext_c99_flexible_array_member from
DiagnosticParseKinds.td to DiagnosticSemaKinds.td because it's driven by
Sema, not Parse.
Also, the liberty was taken to edit ext_c99_flexible_array_member to
match other, similar, diagnostics.
llvm-svn: 193919
2013-11-02 10:38:05 +00:00
David Majnemer
77c2754d58
Sema: Flexible array members were introduced in C99, diagnose their use in C++
...
The declaration of a flexible array member was correctly diagnosed as an
extension in C89 mode but not in C++.
llvm-svn: 193918
2013-11-02 09:22:44 +00:00
Enea Zaffanella
c7cb48c4b9
Fixed implementation of C89 6.5.7 p3.
...
Warning should be emitted only for InitListExpr nodes.
llvm-svn: 186859
2013-07-22 19:10:20 +00:00
Enea Zaffanella
1aac546d31
Implement the part of C89 6.5.7 p3 requiring a constant initializer list
...
when initializing aggregate/union types, no matter if static or not.
llvm-svn: 186817
2013-07-22 10:58:26 +00:00
Dmitri Gribenko
1cd2305703
Change the wording of the extension warning from
...
> 'long long' is an extension when C99 mode is not enabled
to
> 'long long' is a C++11 extension
while compiling in C++98 mode.
llvm-svn: 164545
2012-09-24 18:19:21 +00:00
Eli Friedman
c1f0d5b873
Implement C90 pedantic warning for duplicate declaration specifiers which are duplicated via a typedef. Patch by Tim Northover.
...
llvm-svn: 154136
2012-04-05 22:47:34 +00:00
David Chisnall
07518f249f
Warn on flexible array members when in C89 mode, with -pedantic.
...
This fixes PR 4307.
Patch by Eitan Adler!
llvm-svn: 152918
2012-03-16 12:15:37 +00:00
John McCall
5ed3caf2e3
Warn about non-int main() results in GNU C mode instead of erroring.
...
Based on a patch by Vasiliy Korchagin!
llvm-svn: 150500
2012-02-14 19:50:52 +00:00
Richard Smith
e434590bd9
Change the diagnostics which said 'accepted as an extension' to instead say
...
'is an extension'. The former is inappropriate and confusing when building with
-Werror/-pedantic-errors.
llvm-svn: 147357
2011-12-29 21:57:33 +00:00
Hans Wennborg
70a1324428
Only do typo correction for implicit function decls when
...
they are treated as errors.
Doing typo correction when these are just warnings slows down the
compilation of source which deliberately uses implicit function
declarations.
llvm-svn: 146153
2011-12-08 15:56:07 +00:00
Hans Wennborg
2fb8b91f6f
Suggest typo corrections for implicit function declarations.
...
A mistyped function call becomes an inmplicit function declaration in C.
Suggest typo correction when one can be found.
llvm-svn: 145930
2011-12-06 09:46:12 +00:00
Eli Friedman
ea7b85bfe0
PR4304: Add warning for designators in strict c89 mode.
...
llvm-svn: 130117
2011-04-24 22:14:22 +00:00
Douglas Gregor
959d5a0cbd
Implement support for variable length arrays in C++. VLAs are limited
...
in several important ways:
- VLAs of non-POD types are not permitted.
- VLAs cannot be used in conjunction with C++ templates.
These restrictions are intended to keep VLAs out of the parts of the
C++ type system where they cause the most trouble. Fixes PR5678 and
<rdar://problem/8013618>.
llvm-svn: 104443
2010-05-22 16:17:30 +00:00
Daniel Dunbar
8fbe78f6fc
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.
...
- This is designed to make it obvious that %clang_cc1 is a "test variable"
which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
can be useful to redefine what gets run as 'clang -cc1' (for example, to set
a default target).
llvm-svn: 91446
2009-12-15 20:14:24 +00:00
Mike Stump
11289f4280
Remove tabs, and whitespace cleanups.
...
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
Mike Stump
753d120975
Prep for new warning.
...
llvm-svn: 76709
2009-07-22 00:43:08 +00:00
Eli Friedman
4058a842e6
Fix a minor edge case in C89 mode related to the definition of a
...
"function designator".
(This causes a minor glitch in the
diagnostics for C++ member pointers, but we weren't printing the
right diagnostic there anyway.)
llvm-svn: 70307
2009-04-28 17:59:09 +00:00
Eli Friedman
ab2784f2c1
Fix for PR4074: allow subscripting non-lvalue arrays in C90 mode.
...
I wasn't originally going to use this approach, but cases like
test/Sema/expr-comma.c make things difficult.
llvm-svn: 70096
2009-04-25 23:46:54 +00:00
Daniel Dunbar
a45cf5b6b0
Rename clang to clang-cc.
...
Tests and drivers updated, still need to shuffle dirs.
llvm-svn: 67602
2009-03-24 02:24:46 +00:00
Chris Lattner
b6ec4e75ad
Clean up the C89/C++ warnings about C99 array features to not
...
emit duplicate diags (some in parser and some in sema) and to
warn about use of typequals in array sizes. This implements
PR2759.
llvm-svn: 61197
2008-12-18 06:50:14 +00:00
Chris Lattner
3d72297909
diagnose C99 6.9.1p5, C arguments in definitions that are lacking
...
a name. This implements PR3208.
llvm-svn: 61127
2008-12-17 07:32:46 +00:00
Chris Lattner
0e91b41902
typedef void T;
...
void f(T);
is only invalid in C++ mode, not C89 mode.
llvm-svn: 49460
2008-04-10 02:26:16 +00:00
Chris Lattner
58258246ec
Several improvements from Doug Gregor related to default
...
argument handling. I'll fix up the c89 (void) thing next.
llvm-svn: 49459
2008-04-10 02:22:51 +00:00
Chris Lattner
9d51f2b9d4
Fix handling of implicit int, resolving PR2012 and reverting (and
...
subsuming) my patch for PR1999.
llvm-svn: 49251
2008-04-05 06:32:51 +00:00
Chris Lattner
94fc8063b4
Step #1 to fixing PR2012: c89 allows declspecs to be completely
...
missing from function definitions only. If we see a function
definiton with missing declspecs, just fudge in an int.
llvm-svn: 49250
2008-04-05 05:52:15 +00:00
Chris Lattner
d2a02fe840
fix the second half of PR2041: __restrict is ok in c90 mode, even if
...
restrict isn't.
llvm-svn: 47316
2008-02-19 06:46:10 +00:00
Chris Lattner
287c734075
Fix PR2041: restrict is not a keyword in c90.
...
llvm-svn: 47160
2008-02-15 18:02:59 +00:00
Chris Lattner
7b8134f5c6
Fix PR1999, by emitting a hard error only if an argument declarator is completely
...
missing. Otherwise, it is an implicit int case, which is valid in c90 and invalid
elsewhere, but accepted as an extension.
llvm-svn: 46938
2008-02-10 23:08:00 +00:00
Chris Lattner
5e4c75f4ef
rename -parse-ast-print to -ast-print
...
rename -parse-ast-dump to -ast-dump
remove -parse-ast, which is redundant with -fsyntax-only
llvm-svn: 42852
2007-10-11 00:18:28 +00:00
Ted Kremenek
0883fd5817
Removed option "-parse-ast-check" from clang driver. This is now implemented
...
using "-parse-ast -verify".
Updated all test cases (using a sed script) that invoked -parse-ast-check to
now use -parse-ast -verify.
Fixed a bug where using "-verify" instead of "-parse-ast-check" would not
correctly create the DiagClient needed to accumulate diagnostics.
llvm-svn: 42365
2007-09-26 20:14:22 +00:00
Chris Lattner
fec2519b4b
-C mode doesn't return comments on "#" lines, so the diag checker doesn't pick them up.
...
Test this the hard way.
llvm-svn: 41605
2007-08-30 06:38:49 +00:00
Neil Booth
ac582c5ecb
Ensure we diagnose long long literals in C90 mode.
...
llvm-svn: 41581
2007-08-29 22:00:19 +00:00
Chris Lattner
35da3e29dd
extwarn about VLAs in C89 mode.
...
llvm-svn: 41545
2007-08-28 16:54:00 +00:00
Chris Lattner
f2c338b7d1
warn about long long when in c89 mode.
...
llvm-svn: 41543
2007-08-28 16:40:32 +00:00
Chris Lattner
d864daf5c6
extwarn about decls intermixed with code in c89 mode.
...
llvm-svn: 41477
2007-08-27 04:29:41 +00:00