llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
29.09k stars 12k forks source link

spec2000/176.gcc LTO link failure on IA64 HSW architecture after commit r278610 #29716

Open llvmbot opened 8 years ago

llvmbot commented 8 years ago
Bugzilla Link 30368
Version trunk
OS Linux
Blocks llvm/llvm-project#29857
Reporter LLVM Bugzilla Contributor
CC @joker-eph

Extended Description

Bisect analysis showed LLVM revision 278610 is responsible for the fail. The comments to commit are the following.

commit c5432bdac59045fae393f01258ec6972c539904d Author: Mehdi Amini mehdi.amini@apple.com Date: Sat Aug 13 23:31:53 2016 +0000

Fix bitcode auto-upgrade when using bitcode lazy loading

The auto-upgrade path could be called before the VST (global
names) was fully parsed, and thus intrinsic names were not
available and the autoupgrade logic could not operate.

Fix link failures with ThinLTO.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278610 91177308-0d34-0410-b5e6-96231b3b80d8

LLVM-clang options: -m64 -fuse-ld=gold -static -O2 -ffast-math -flto -mfpmath=sse -march=core-avx2

The failure is reproduced in applying both ld.gold and ld.bfd linker. Linker gives the following error message.

clang -m64 -O2 -ffast-math -static -flto -fuse-ld=gold -mfpmath=sse -march=core-avx2 -DSPEC_CPU2000_LP64 c-parse.o c-lang.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-iterate.o toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o function.o stmt.o expr.o calls.o expmed.o explow.o optabs.o varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o real.o dbxout.o sdbout.o dwarfout.o xcoffout.o integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o regclass.o local-alloc.o global.o reload.o reload1.o caller-save.o insn-peep.o reorg.o sched.o final.o recog.o reg-stack.o insn-opinit.o insn-recog.o insn-extract.o insn-output.o insn-emit.o insn-attrtab.o m88k.o getpwd.o convert.o bc-emit.o bc-optab.o obstack.o -lm -o cc1 …………………………………. /tmp/lto-llvm-ca497d.o:ld-temp.o:function emit_no_conflict_block: error: undefined reference to 'reload_in_progress' /tmp/lto-llvm-ca497d.o:ld-temp.o:function gen_move_insn: error: undefined reference to 'reload_in_progress' /tmp/lto-llvm-ca497d.o:ld-temp.o:function gen_rtx: error: undefined reference to 'reload_in_progress' /tmp/lto-llvm-ca497d.o:ld-temp.o:function gen_reg_rtx: error: undefined reference to 'reload_in_progress' clang-4.0: error: linker command failed with exit code 1 (use -v to see invocation)

Okunev Sergey, Software Engineer Intel Compiler Team

llvmbot commented 2 years ago

mentioned in issue llvm/llvm-project#29857

llvmbot commented 8 years ago

After the following commit (see comment below) 176.gcc with considered optset (including LTO) runs successfully.

commit da49ba4e370afae6abff251d1d5899715790c810 Author: Rafael Espindola rafael.espindola@gmail.com Date: Mon Oct 3 15:51:42 2016 +0000

Don't drop the llvm. prefix when renaming.

If the llvm. prefix is dropped other parts of llvm don't see this as
an intrinsic.  This means that the number of regular symbols depends
on the context the module is loaded into, which causes LTO to abort.

Fixes llvm/llvm-project#29857 .

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283117 91177308-0d34-0410-b5e6-96231b3b80d8
llvmbot commented 8 years ago

Bug llvm/llvm-project#29707 has been marked as a duplicate of this bug.

llvmbot commented 8 years ago

r278610 was reverted in r278613. Can you try r278614 and r278615?

The benchmark runs successfully with rev. 278614 and fails as described above on rev. 278615.

joker-eph commented 8 years ago

r278610 was reverted in r278613. Can you try r278614 and r278615?