diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-04-26 23:44:33 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-04-26 23:44:33 +0000 |
commit | b0fe70451e23a2b5ef19399d286c6a1cdaf5e686 (patch) | |
tree | f05534e837c1fad09fe652126e564b092add3fa6 /clang/test/Frontend/gnu-inline.c | |
parent | 092e32e540c6d024b8bdcf30e81a9177d4cb9e37 (diff) | |
download | bcm5719-llvm-b0fe70451e23a2b5ef19399d286c6a1cdaf5e686.tar.gz bcm5719-llvm-b0fe70451e23a2b5ef19399d286c6a1cdaf5e686.zip |
Don't accept -std= values that would switch us to a different source language.
We already prohibited this in most cases (in r130710), but had some bugs in our
enforcement of this rule. Specifically, this prevents the following
combinations:
* -x c -std=clN.M, which would previously effectively act as if -x cl were
used, despite the input being a C source file. (-x cl -std=cNN continues
to be disallowed.)
* -x c++ -std=cuda, which would previously select C++98 + CUDA, despite that
not being a C++ standard. (-x cuda -std=c++NN is still permitted, and
selects CUDA with the given C++ standard as its base language.
-x cuda -std=cuda is still supported with the meaning of CUDA + C++98.)
* -x renderscript -std=c++NN, which would previously form a hybrid "C++ with
RenderScript extensions" language. We could support such a thing, but
shouldn't do so by accident.
llvm-svn: 301497
Diffstat (limited to 'clang/test/Frontend/gnu-inline.c')
-rw-r--r-- | clang/test/Frontend/gnu-inline.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/test/Frontend/gnu-inline.c b/clang/test/Frontend/gnu-inline.c index 0272df7e71e..75d4fe6516f 100644 --- a/clang/test/Frontend/gnu-inline.c +++ b/clang/test/Frontend/gnu-inline.c @@ -3,8 +3,10 @@ // RUN: %clang_cc1 -std=c99 -fgnu89-inline -fsyntax-only -x c -E -dM %s | FileCheck --check-prefix=GNU-INLINE %s // RUN: %clang_cc1 -fsyntax-only -x c++ -E -dM %s | FileCheck --check-prefix=GNU-INLINE %s // RUN: not %clang_cc1 -fgnu89-inline -fsyntax-only -x c++ %s 2>&1 | FileCheck --check-prefix=CXX %s +// RUN: not %clang_cc1 -fgnu89-inline -fsyntax-only -x objective-c++ %s 2>&1 | FileCheck --check-prefix=OBJCXX %s -// CXX: '-fgnu89-inline' not allowed with 'C++/ObjC++' +// CXX: '-fgnu89-inline' not allowed with 'C++' +// OBJCXX: '-fgnu89-inline' not allowed with 'Objective-C++' // STDC-INLINE-NOT: __GNUC_GNU_INLINE__ // STDC-INLINE: #define __GNUC_STDC_INLINE__ 1 |