[Bug other/46865] New: Using -save-temps (or ccache, distcc) produces different results with multiline macros containing asm code

juha.kallioinen at nokia dot com gcc-bugzilla@gcc.gnu.org
Thu Dec 9 13:52:00 GMT 2010


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46865

           Summary: Using -save-temps (or ccache, distcc) produces
                    different results with multiline macros containing asm
                    code
           Product: gcc
           Version: 4.5.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: juha.kallioinen@nokia.com


Created attachment 22691
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22691
example case

See the attached example case.

Also reported here:
https://bugs.launchpad.net/gcc-linaro/+bug/687406

When a piece of code containing a multiline macro construct with embedded asm
code is first preprocessed then compiled into an object or asm file, the
results are different than directly compiling them into an object file or asm
code.

The preprocessor step could take place when using -save-temps. It also happens
when using ccache or distcc.

Linux kernel arm parts have this kind of code at least in

local_irq_restore()                [include/linux/irqflags.h]
  -> raw_local_irq_restore()       [arch/arm/include/asm/irqflags.h]

----
Result of example case without -save-temps:

        .file   "test.c"
        .text
.globl optimized
        .type   optimized, @function
optimized:
.LFB0:
        .cfi_startproc
#APP
# 15 "/tmp/test.c" 1
        nop

# 0 "" 2
#NO_APP
        ret
        .cfi_endproc
.LFE0:
        .size   optimized, .-optimized
        .ident  "GCC: (GNU) 4.5.1"
        .section        .note.GNU-stack,"",@progbits

----

Result of example case with -save-temps:


        .file   "test.c"
        .text
.globl optimized
        .type   optimized, @function
optimized:
.LFB0:
        .cfi_startproc
        testb   $1, flags(%rip)
        je      .L2
#APP
# 15 "/tmp/test.c" 1
        nop

# 0 "" 2
#NO_APP
        ret
.L2:
#APP
# 15 "/tmp/test.c" 1
        nop

# 0 "" 2
#NO_APP
        ret
        .cfi_endproc
.LFE0:
        .size   optimized, .-optimized
        .ident  "GCC: (GNU) 4.5.1"
        .section        .note.GNU-stack,"",@progbits



More information about the Gcc-bugs mailing list