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