r196606 - Add option to use temporary file for assembling with clang
David Peixotto
dpeixott at codeaurora.org
Fri Dec 6 12:27:33 PST 2013
Author: dpeixott
Date: Fri Dec 6 14:27:33 2013
New Revision: 196606
URL: http://llvm.org/viewvc/llvm-project?rev=196606&view=rev
Log:
Add option to use temporary file for assembling with clang
This commit adds the flag '-via-file-asm' to the clang driver. The
purpose of this flag is to have a way to test that clang can consume
the assembly code that it outputs. When passed this flag, clang will
generate a temporary file that contains the assembly output from the
compile step. This assembly file will then be consumed by either the
integrated assembler or the external assembler. To test that the
integrated assembler can consume its own output compile with:
$ clang -integrated-assembler -via-file-asm
Without the '-via-file-asm' flag, clang would directly create the
object file when using the integrated assembler. With the flag it
will first create the temporary assembly file and then read that
file and assemble it with the integrated assembler.
The flow is similar to -save-temps, except that it only effects
the assembly input and the temporary file is not saved.
Added:
cfe/trunk/test/Driver/via-file-asm.c
Modified:
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Driver/Driver.cpp
Modified: cfe/trunk/include/clang/Driver/Options.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=196606&r1=196605&r2=196606&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Fri Dec 6 14:27:33 2013
@@ -1230,6 +1230,8 @@ def rtlib_EQ : Joined<["-", "--"], "rtli
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>;
Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=196606&r1=196605&r2=196606&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Fri Dec 6 14:27:33 2013
@@ -1456,6 +1456,7 @@ static const Tool *SelectToolForJob(Comp
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) &&
Added: cfe/trunk/test/Driver/via-file-asm.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/via-file-asm.c?rev=196606&view=auto
==============================================================================
--- cfe/trunk/test/Driver/via-file-asm.c (added)
+++ cfe/trunk/test/Driver/via-file-asm.c Fri Dec 6 14:27:33 2013
@@ -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
More information about the cfe-commits
mailing list