diff options
| -rw-r--r-- | clang/include/clang/Driver/Options.td | 2 | ||||
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 1 | ||||
| -rw-r--r-- | clang/test/Driver/via-file-asm.c | 14 |
3 files changed, 17 insertions, 0 deletions
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index f80069591a3..34641722aff 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1230,6 +1230,8 @@ def rtlib_EQ : Joined<["-", "--"], "rtlib=">; def r : Flag<["-"], "r">; def save_temps : Flag<["-", "--"], "save-temps">, Flags<[DriverOption]>, HelpText<"Save intermediate compilation results">; +def via_file_asm : Flag<["-", "--"], "via-file-asm">, Flags<[DriverOption]>, + HelpText<"Write assembly to file for input to assemble jobs">; def sectalign : MultiArg<["-"], "sectalign", 3>; def sectcreate : MultiArg<["-"], "sectcreate", 3>; def sectobjectsymbols : MultiArg<["-"], "sectobjectsymbols", 2>; diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index d4a2e470488..7826cb30fcf 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -1456,6 +1456,7 @@ static const Tool *SelectToolForJob(Compilation &C, const ToolChain *TC, if (TC->useIntegratedAs() && !C.getArgs().hasArg(options::OPT_save_temps) && + !C.getArgs().hasArg(options::OPT_via_file_asm) && !C.getArgs().hasArg(options::OPT__SLASH_FA) && !C.getArgs().hasArg(options::OPT__SLASH_Fa) && isa<AssembleJobAction>(JA) && diff --git a/clang/test/Driver/via-file-asm.c b/clang/test/Driver/via-file-asm.c new file mode 100644 index 00000000000..92fc19096e1 --- /dev/null +++ b/clang/test/Driver/via-file-asm.c @@ -0,0 +1,14 @@ +// Should save and read back the assembly from a file +// RUN: %clang -integrated-as -via-file-asm %s -### 2>&1 | FileCheck %s +// CHECK: "-cc1" +// CHECK: "-o" "[[TMP:[^"]*]]" +// CHECK: -cc1as +// CHECK: [[TMP]] + +// Should not force using the integrated assembler +// RUN: %clang -no-integrated-as -via-file-asm %s -### 2>&1 | FileCheck --check-prefix=NO_IAS %s +// NO_IAS-NOT: "-cc1as" + +// Test arm target specifically for the same behavior +// RUN: %clang -target arm -integrated-as -via-file-asm %s -### 2>&1 | FileCheck %s +// RUN: %clang -target arm -no-integrated-as -via-file-asm %s -### 2>&1 | FileCheck --check-prefix=NO_IAS %s |

