https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65064
Bug ID: 65064 Summary: [5.0 regression] FAIL: gcc.dg/torture/pr60115.c -O1 (test for excess errors) Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: sch...@linux-m68k.org CC: hjl at gcc dot gnu.org, rth at gcc dot gnu.org Target: ia64-*-* $ gcc/xgcc -B gcc/ ../gcc/testsuite/gcc.dg/torture/pr60115.c -O /usr/ia64-suse-linux/bin/ld: a.out: __gp does not cover short data segment collect2: error: ld returned 1 exit status Broken by r220674. --- gcc-20150213/Build/pr60115.s 2015-02-14 21:36:37.000000000 +0100 +++ gcc-20150214/Build/pr60115.s 2015-02-14 21:35:30.000000000 +0100 @@ -7,22 +7,20 @@ .proc main# main: .prologue - .save ar.lc, r3 - mov r3 = ar.lc + .save ar.lc, r2 + mov r2 = ar.lc .body [.L2:] - addl r14 = @ltoffx(a#), r1 - ;; - ld8.mov r14 = [r14], a# + addl r14 = @gprel(a#), gp ;; ld4 r14 = [r14] ;; cmp4.eq p6, p7 = 0, r14 - addl r2 = @ltoffx(b#), r1 + addl r16 = @ltoffx(b#+32768), r1 ;; - ld8.mov r2 = [r2], b# + ld8.mov r16 = [r16], b#+32768 ;; - addl r16 = 40000, r2 + adds r16 = 7232, r16 .L4: .pred.rel.mutex p6, p7 (p6) br.cond.dpnt .L3 @@ -40,17 +38,15 @@ adds r14 = -1, r14 ;; br.cloop.sptk.few .L6 - addl r14 = @ltoffx(a#), r1 - ;; - ld8.mov r14 = [r14], a# + addl r14 = @gprel(a#), gp ;; st4 [r14] = r0 .L3: mov r8 = r0 - mov ar.lc = r3 + mov ar.lc = r2 br.ret.sptk.many b0 ;; .endp main# .common b#,8,4 .common a#,4,4 - .ident "GCC: (GNU) 5.0.0 20150213 (experimental) [trunk revision 220673]" + .ident "GCC: (GNU) 5.0.0 20150214 (experimental) [trunk revision 220705]"