dyung created this revision. dyung added reviewers: thakis, rnk. dyung added a project: clang.
A previous change D65233 <https://reviews.llvm.org/D65233> (r367165) attempted to fix this issue, but it missed a case where the integrated assembler is not being used. For example, consider the case where clang is invoked with -E and also -fno-integrated-as, the compiler was not supressing the warnings about unused arguments. This change attempts to fix that as well as expand the testing added in the previous commit to cover both scenarios. Repository: rC Clang https://reviews.llvm.org/D65974 Files: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/as-options.s Index: clang/test/Driver/as-options.s =================================================================== --- clang/test/Driver/as-options.s +++ clang/test/Driver/as-options.s @@ -39,30 +39,62 @@ // Test that assembler options don't cause warnings when there's no assembler // stage. -// RUN: %clang -mincremental-linker-compatible -E \ +// RUN: %clang -mincremental-linker-compatible -E -fintegrated-as \ // RUN: -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -mincremental-linker-compatible -E \ +// RUN: %clang -mincremental-linker-compatible -E -fno-integrated-as \ +// RUN: -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -mincremental-linker-compatible -E -fintegrated-as \ // RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -mincremental-linker-compatible -E -fno-integrated-as \ +// RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + // RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ -// RUN: -o /dev/null -x c++ %s 2>&1 \ +// RUN: -fintegrated-as -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s // RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ -// RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: -fno-integrated-as -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ +// RUN: -fintegrated-as -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ +// RUN: -fno-integrated-as -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E \ + +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fintegrated-as \ +// RUN: -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fno-integrated-as \ // RUN: -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E \ + +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fintegrated-as \ // RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E \ +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fno-integrated-as \ +// RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E -fintegrated-as \ // RUN: -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s // RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E \ +// RUN: -fno-integrated-as -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E -fintegrated-as \ // RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E \ +// RUN: -fno-integrated-as -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + // NOWARN-NOT: unused // Test that unsupported arguments do not cause errors when -fno-integrated-as Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -3556,7 +3556,7 @@ if (!isa<AssembleJobAction>(JA)) { // The args claimed here should match the args used in // CollectArgsForIntegratedAssembler(). - if (TC.useIntegratedAs()) { + if (TC.useIntegratedAs() || isa<PreprocessJobAction>(JA)) { Args.ClaimAllArgs(options::OPT_mrelax_all); Args.ClaimAllArgs(options::OPT_mno_relax_all); Args.ClaimAllArgs(options::OPT_mincremental_linker_compatible);
Index: clang/test/Driver/as-options.s =================================================================== --- clang/test/Driver/as-options.s +++ clang/test/Driver/as-options.s @@ -39,30 +39,62 @@ // Test that assembler options don't cause warnings when there's no assembler // stage. -// RUN: %clang -mincremental-linker-compatible -E \ +// RUN: %clang -mincremental-linker-compatible -E -fintegrated-as \ // RUN: -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -mincremental-linker-compatible -E \ +// RUN: %clang -mincremental-linker-compatible -E -fno-integrated-as \ +// RUN: -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -mincremental-linker-compatible -E -fintegrated-as \ // RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -mincremental-linker-compatible -E -fno-integrated-as \ +// RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + // RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ -// RUN: -o /dev/null -x c++ %s 2>&1 \ +// RUN: -fintegrated-as -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s // RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ -// RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: -fno-integrated-as -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ +// RUN: -fintegrated-as -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -mimplicit-it=always -target armv7-linux-gnueabi -E \ +// RUN: -fno-integrated-as -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E \ + +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fintegrated-as \ +// RUN: -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fno-integrated-as \ // RUN: -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E \ + +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fintegrated-as \ // RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s -// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E \ +// RUN: %clang -Wa,-mbig-obj -target i386-pc-windows -E -fno-integrated-as \ +// RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E -fintegrated-as \ // RUN: -o /dev/null -x c++ %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s // RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E \ +// RUN: -fno-integrated-as -o /dev/null -x c++ %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + +// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E -fintegrated-as \ // RUN: -o /dev/null -x assembler-with-cpp %s 2>&1 \ // RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s +// RUN: %clang -Xassembler -mbig-obj -target i386-pc-windows -E \ +// RUN: -fno-integrated-as -o /dev/null -x assembler-with-cpp %s 2>&1 \ +// RUN: | FileCheck --check-prefix=NOWARN --allow-empty %s + // NOWARN-NOT: unused // Test that unsupported arguments do not cause errors when -fno-integrated-as Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -3556,7 +3556,7 @@ if (!isa<AssembleJobAction>(JA)) { // The args claimed here should match the args used in // CollectArgsForIntegratedAssembler(). - if (TC.useIntegratedAs()) { + if (TC.useIntegratedAs() || isa<PreprocessJobAction>(JA)) { Args.ClaimAllArgs(options::OPT_mrelax_all); Args.ClaimAllArgs(options::OPT_mno_relax_all); Args.ClaimAllArgs(options::OPT_mincremental_linker_compatible);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits