diff options
Diffstat (limited to 'clang/test/Driver/cl-options.c')
-rw-r--r-- | clang/test/Driver/cl-options.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c index a3ee5b3cdb3..673b9edb090 100644 --- a/clang/test/Driver/cl-options.c +++ b/clang/test/Driver/cl-options.c @@ -365,17 +365,25 @@ // ThreadSafeStatics-NOT: "-fno-threadsafe-statics" // RUN: %clang_cl /Zi /c -### -- %s 2>&1 | FileCheck -check-prefix=Zi %s -// Zi: "-gline-tables-only" // Zi: "-gcodeview" +// Zi: "-debug-info-kind=line-tables-only" // RUN: %clang_cl /Z7 /c -### -- %s 2>&1 | FileCheck -check-prefix=Z7 %s -// Z7: "-gline-tables-only" // Z7: "-gcodeview" - +// Z7: "-debug-info-kind=line-tables-only" + +// This test was super sneaky: "/Z7" means "line-tables", but "-gdwarf" occurs +// later on the command line, so it should win. Interestingly the cc1 arguments +// came out right, but had wrong semantics, because an invariant assumed by +// CompilerInvocation was violated: it expects that at most one of {gdwarfN, +// line-tables-only} appear. If you assume that, then you can safely use +// Args.hasArg to test whether a boolean flag is present without caring +// where it appeared. And for this test, it appeared to the left of -gdwarf +// which made it "win". This test could not detect that bug. // RUN: %clang_cl /Z7 -gdwarf /c -### -- %s 2>&1 | FileCheck -check-prefix=Z7_gdwarf %s -// Z7_gdwarf: "-gline-tables-only" // Z7_gdwarf: "-gcodeview" -// Z7_gdwarf: "-gdwarf-4" +// Z7_gdwarf: "-debug-info-kind=limited" +// Z7_gdwarf: "-dwarf-version=4" // RUN: %clang_cl -fmsc-version=1800 -TP -### -- %s 2>&1 | FileCheck -check-prefix=CXX11 %s // CXX11: -std=c++11 |