http://llvm.org/bugs/show_bug.cgi?id=9479
Summary: Register coalescing doing very poor job on EEMBC
benchmark
Product: new-bugs
Version: 2.9
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: new bugs
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Created an attachment (id=6323)
--> (http://llvm.org/bugs/attachment.cgi?id=6323)
EEMBC benchmark program bitmnp01/bmark.c with include files back-substituted.
Compile the EEMBC benchmark program "bitmnp01/bmark.c" (attached) with the
SPARC target at -Os, -O2, or -O3 and observe the generated assembly file.
(Other targets show the problem as well.)
There are over a hundred unnecessary register copy instructions due to the
failure of the register coalescer. The problem also causes unnecessary
spilling. For the first sequence of such copies, look near basic block 20.
This problem makes LLVM's generated code look terrible compared to GCC.
.LBB0_20: ! %bb22
! in Loop: Header=BB0_13 Depth=2
sethi %hi(charset1.2744), %l1
st %l0, [%l1+%lo(charset1.2744)]
or %g0, 1, %l1
sethi 0, %l2
st %l2, [%fp+-120]
ld [%fp+-148], %l4
st %l2, [%l4+%lo(i1.2732)]
st %l0, [%fp+-84]
st %l0, [%fp+-88]
st %l0, [%fp+-92]
st %l0, [%fp+-96]
st %l0, [%fp+-104]
or %g0, %l0, %l4
st %l0, [%fp+-76]
st %l0, [%fp+-80]
or %g0, %l0, %l5
or %g0, %l0, %l6
or %g0, %l0, %l7
or %g0, %l0, %i0
or %g0, %l0, %i1
or %g0, %l0, %i2
or %g0, %l0, %i3
or %g0, %l0, %i4
or %g0, %l0, %i5
or %g0, %l0, %o0
--
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs