From: Rafael Espindola Date: Thu, 8 Mar 2012 14:39:55 +0000 (+0000) Subject: Implement -fno-dwarf2-cfi-asm on linux too. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=701ec8d11039fd0c571312253e6b15f22f29c592;p=clang Implement -fno-dwarf2-cfi-asm on linux too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152316 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 1420e895a1..c9db799976 100644 --- a/lib/Driver/Tools.cpp +++ b/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/test/Driver/dwarf2-cfi-asm.c b/test/Driver/dwarf2-cfi-asm.c new file mode 100644 index 0000000000..a5c4878703 --- /dev/null +++ b/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