r196606 - Add option to use temporary file for assembling with clang

Timur Iskhodzhanov timurrrr at google.com
Mon Dec 9 03:00:29 PST 2013


FYI

I see this test failure after your change:
Command 2: "llvm/build/bin/./clang.EXE" "-no-integrated-as"
"-via-file-asm" "llvm\tools\clang\test\Driver\via-file-asm.c" "-###"
Command 2 Result: 3

Looks like an assertion failure?

2013/12/7 David Peixotto <dpeixott at codeaurora.org>:
> 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
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list