llvm-project/clang/test/Parser
Eli Friedman 2b680b43e9 Simplify the scheme used for keywords, and change the classification
scheme to be more useful.

The new scheme introduces a set of categories that should be more 
readable, and also reflects what we want to consider as an extension 
more accurately.  Specifically, it makes the "what is a keyword" 
determination accurately reflect whether the keyword is a GNU or 
Microsoft extension.

I also introduced separate flags for keyword aliases; this is useful 
because the classification of the aliases is mostly unrelated to the 
classification of the original keyword.

This patch treats anything that's in the implementation 
namespace (prefixed with "__", or "_X" where "X" is any upper-case 
letter) as a keyword without marking it as an extension.  This is 
consistent with the standards in that an implementation is allowed to define 
arbitrary extensions in the implementation namespace without violating 
the standard. This gets rid of all the nasty "extension used" warnings 
for stuff like __attribute__ in -pedantic mode.  We still warn for 
extensions outside of the the implementation namespace, like typeof.
If someone wants to implement -Wextensions or something like that, we 
could add additional information to the keyword table.

This also removes processing for the unused "Boolean" language option; 
such an extension isn't supported on any other C implementation, so I 
don't see any point to adding it.

The changes to test/CodeGen/inline.c are required because previously, we 
weren't actually disabling the "inline" keyword in -std=c89 mode.

I'll remove Boolean and NoExtensions from LangOptions in a follow-up 
commit.

llvm-svn: 70281
2009-04-28 03:13:54 +00:00
..
2008-10-31-parse-noop-failure.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
CompoundStmtScope.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
MicrosoftExtensions.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
argument_qualified.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
argument_redef.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
argument_scope.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
asm.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
attributes.c Simplify the scheme used for keywords, and change the classification 2009-04-28 03:13:54 +00:00
bad-control.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
block-block-storageclass.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
block-pointer-decl.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
builtin_classify_type.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
builtin_types_compatible.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
c-namespace.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
char-literal-printing.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
check-objc2-syntax-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
check-syntax-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
check_cast.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
compound_literal.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
control-scope.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-bool.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-casting.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-class.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-condition.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-decl.cpp Fix some C++ error recovery problems in init declarator parsing 2009-04-12 22:23:27 +00:00
cxx-exception-spec.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-namespace-alias.cpp Parse namespace aliases. 2009-03-28 04:07:16 +00:00
cxx-reference.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-template-decl.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-try.cpp The mysterious bug turns out to be an incredibly bone-headed mistake. 2009-04-26 21:08:36 +00:00
cxx-typeid.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-typeof.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-using-directive.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx-variadic-func.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
cxx0x-rvalue-reference.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
declarators.c Simplify the scheme used for keywords, and change the classification 2009-04-28 03:13:54 +00:00
designator.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
encode.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
enhanced-proto-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
expressions.c Improve error recovery for calls, fixing: 2009-04-13 00:10:38 +00:00
expressions.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
extension.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
function-decls.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
goto-ident.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
if-scope-c90.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
if-scope-c99.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
implicit-casts.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
method-prototype-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
namelookup-bug-1.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
namelookup-bug-2.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-alias-printing.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-category-neg-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-forcollection-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-forcollection-neg-2.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-forcollection-neg.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-foreach-syntax.m Implement the first set of changes for PR3963 and rdar://6759604, 2009-04-12 20:42:31 +00:00
objc-init.m Improve the 'cannot pass objc interface by value' diagnostic: 2009-04-11 19:08:56 +00:00
objc-interfaces.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-messaging-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-messaging-neg-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-missing-impl.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-property-syntax.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-quirks.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
objc-try-catch-1.m implement semantic analysis for @synchronized, fixing a crash on invalid 2009-04-21 06:11:25 +00:00
objc-type-printing.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
parmvardecl_conversion.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
pointer-arithmetic.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
pointer_promotion.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
pragma-pack.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
prefix-attributes.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
promote_types_in_proto.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
recovery.c Simplify the scheme used for keywords, and change the classification 2009-04-28 03:13:54 +00:00
selector-1.m Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
statements.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
struct-recursion.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
traditional_arg_scope.c Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
typeof.c hoist checks for ; and in out of ParseInitDeclaratorListAfterFirstDeclarator 2009-03-29 17:18:04 +00:00
types.c fix "Comment#1" from PR3872 2009-03-24 17:05:27 +00:00