CmdArgs.push_back("-generate-type-units");
}
- Args.AddAllArgs(CmdArgs, options::OPT_ffunction_sections);
- Args.AddAllArgs(CmdArgs, options::OPT_fdata_sections);
+ if (Args.hasFlag(options::OPT_ffunction_sections,
+ options::OPT_fno_function_sections, false)) {
+ CmdArgs.push_back("-ffunction-sections");
+ }
+
+ if (Args.hasFlag(options::OPT_fdata_sections,
+ options::OPT_fno_data_sections, false)) {
+ CmdArgs.push_back("-fdata-sections");
+ }
Args.AddAllArgs(CmdArgs, options::OPT_finstrument_functions);
--- /dev/null
+// Test handling of -f(no-)function-sections and -f(no-)data-sections
+//
+// CHECK-FS: -ffunction-sections
+// CHECK-NOFS-NOT: -ffunction-sections
+// CHECK-DS: -fdata-sections
+// CHECK-NODS-NOT: -fdata-sections
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: | FileCheck --check-prefix=CHECK-NOFS --check-prefix=CHECK-NODS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -ffunction-sections \
+// RUN: | FileCheck --check-prefix=CHECK-FS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -fno-function-sections \
+// RUN: | FileCheck --check-prefix=CHECK-NOFS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -ffunction-sections -fno-function-sections \
+// RUN: | FileCheck --check-prefix=CHECK-NOFS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -fno-function-sections -ffunction-sections \
+// RUN: | FileCheck --check-prefix=CHECK-FS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -ffunction-sections -fno-function-sections -ffunction-sections \
+// RUN: | FileCheck --check-prefix=CHECK-FS %s
+
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -fdata-sections \
+// RUN: | FileCheck --check-prefix=CHECK-DS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -fno-data-sections \
+// RUN: | FileCheck --check-prefix=CHECK-NODS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -fdata-sections -fno-data-sections \
+// RUN: | FileCheck --check-prefix=CHECK-NODS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -fno-data-sections -fdata-sections \
+// RUN: | FileCheck --check-prefix=CHECK-DS %s
+
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN: -target i386-unknown-linux \
+// RUN: -fdata-sections -fno-data-sections -fdata-sections \
+// RUN: | FileCheck --check-prefix=CHECK-DS %s
+