[LLVMbugs] [Bug 14697] New: clang doesn't pass target CPU to linker command for LTO

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Dec 22 14:04:16 PST 2012


http://llvm.org/bugs/show_bug.cgi?id=14697

             Bug #: 14697
           Summary: clang doesn't pass target CPU to linker command for
                    LTO
           Product: clang
           Version: 3.2
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Driver
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: ambrop7 at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 9756
  --> http://llvm.org/bugs/attachment.cgi?id=9756
test.c

Clang should pass the chosen target CPU (e.g. -march option) to the linker for
LTO. Currently the target CPU is not passed, which makes LTO assume the target
CPU is "native", i.e. current CPU. This sometimes results in the emitting of
instructions not supported based on the -march option.

To reproduce this problem:

1) Compile the attached C program, on a new CPU which supports 'vxorps' (in my
case, Core i3 2120). Make sure the gold linker is being used. Compile with this
command:

clang -### -g -march=corei7 -O4 -flto test.c -o test

Attached is compiler output. See how corei7 is not being passed to the linker.

2) Disassemble the resulting program (objdump -S test) and notice the 'vxorps'
instruction which should not have been emitted. Disassembly is attached.
Alternatively, run the program on an older Core i7 CPU and see it crash with
SIGILL.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list