diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-03-08 14:39:55 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-03-08 14:39:55 +0000 |
commit | c41db927f384a9071b144d297c3069778d49f440 (patch) | |
tree | 467db99d30b5860eb43af2f35dcf00212aa2dee5 | |
parent | 48992554cc6a5586a44e255fb8992da9b8b7eebf (diff) | |
download | bcm5719-llvm-c41db927f384a9071b144d297c3069778d49f440.tar.gz bcm5719-llvm-c41db927f384a9071b144d297c3069778d49f440.zip |
Implement -fno-dwarf2-cfi-asm on linux too.
llvm-svn: 152316
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 17 | ||||
-rw-r--r-- | clang/test/Driver/dwarf2-cfi-asm.c | 35 |
2 files changed, 42 insertions, 10 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 1420e895a1b..c9db7999762 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1117,20 +1117,17 @@ static void addExceptionArgs(const ArgList &Args, types::ID InputType, static bool ShouldDisableCFI(const ArgList &Args, const ToolChain &TC) { + bool Default = true; if (TC.getTriple().isOSDarwin()) { // The native darwin assembler doesn't support cfi directives, so // we disable them if we think the .s file will be passed to it. - bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - TC.IsIntegratedAssemblerDefault()); - bool UseCFI = Args.hasFlag(options::OPT_fdwarf2_cfi_asm, - options::OPT_fno_dwarf2_cfi_asm, - UseIntegratedAs); - return !UseCFI; + Default = Args.hasFlag(options::OPT_integrated_as, + options::OPT_no_integrated_as, + TC.IsIntegratedAssemblerDefault()); } - - // For now we assume that every other assembler support CFI. - return false; + return !Args.hasFlag(options::OPT_fdwarf2_cfi_asm, + options::OPT_fno_dwarf2_cfi_asm, + Default); } static bool ShouldDisableDwarfDirectory(const ArgList &Args, diff --git a/clang/test/Driver/dwarf2-cfi-asm.c b/clang/test/Driver/dwarf2-cfi-asm.c new file mode 100644 index 00000000000..a5c4878703b --- /dev/null +++ b/clang/test/Driver/dwarf2-cfi-asm.c @@ -0,0 +1,35 @@ +// RUN: %clang -target x86_64-apple-darwin -### -S -integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-MC-DEFAULT %s +// RUN: %clang -target x86_64-apple-darwin -### -S -integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-MC-CFI %s +// RUN: %clang -target x86_64-apple-darwin -### -S -integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-MC-NOCFI %s + +// RUN: %clang -target x86_64-apple-darwin -### -S -no-integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-AS-DEFAULT %s +// RUN: %clang -target x86_64-apple-darwin -### -S -no-integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-AS-CFI %s +// RUN: %clang -target x86_64-apple-darwin -### -S -no-integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-AS-NOCFI %s + + +// RUN: %clang -target x86_64-pc-linux -### -S -integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-MC-DEFAULT %s +// RUN: %clang -target x86_64-pc-linux -### -S -integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-MC-CFI %s +// RUN: %clang -target x86_64-pc-linux -### -S -integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-MC-NOCFI %s + +// RUN: %clang -target x86_64-pc-linux -### -S -no-integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-AS-DEFAULT %s +// RUN: %clang -target x86_64-pc-linux -### -S -no-integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-AS-CFI %s +// RUN: %clang -target x86_64-pc-linux -### -S -no-integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-AS-NOCFI %s + + + +// CHECK-DARWIN-MC-DEFAULT-NOT: -fno-dwarf2-cfi-asm +// CHECK-DARWIN-MC-CFI-NOT: -fno-dwarf2-cfi-asm +// CHECK-DARWIN-MC-NOCFI: -fno-dwarf2-cfi-asm + +// CHECK-DARWIN-AS-DEFAULT: -fno-dwarf2-cfi-asm +// CHECK-DARWIN-AS-CFI-NOT: -fno-dwarf2-cfi-asm +// CHECK-DARWIN-AS-NOCFI: -fno-dwarf2-cfi-asm + + +// CHECK-LINUX-MC-DEFAULT-NOT: -fno-dwarf2-cfi-asmx +// CHECK-LINUX-MC-CFI-NOT: -fno-dwarf2-cfi-asm +// CHECK-LINUX-MC-NOCFI: -fno-dwarf2-cfi-asm + +// CHECK-LINUX-AS-DEFAULT-NOT: -fno-dwarf2-cfi-asm +// CHECK-LINUX-AS-CFI-NOT: -fno-dwarf2-cfi-asm +// CHECK-LINUX-AS-NOCFI: -fno-dwarf2-cfi-asm |