This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/53427] [4.8 Regression] Bootstrap failure
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 20 May 2012 19:14:20 +0000
- Subject: [Bug bootstrap/53427] [4.8 Regression] Bootstrap failure
- Auto-submitted: auto-generated
- References: <bug-53427-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53427
--- Comment #1 from Uros Bizjak <ubizjak at gmail dot com> 2012-05-20 19:14:20 UTC ---
(gdb) bt
#0 save_call_clobbered_regs () at ../../gcc-svn/trunk/gcc/caller-save.c:877
#1 0x0000000000873bd7 in reload (first=0x7ffff1b100c0, global=1) at
../../gcc-svn/trunk/gcc/reload1.c:939
#2 0x00000000007b6488 in do_reload () at ../../gcc-svn/trunk/gcc/ira.c:4261
#3 rest_of_handle_reload () at ../../gcc-svn/trunk/gcc/ira.c:4352
#4 0x0000000000827645 in execute_one_pass (pass=0x1427920) at
../../gcc-svn/trunk/gcc/passes.c:2183
#5 0x0000000000827a05 in execute_pass_list (pass=0x1427920) at
../../gcc-svn/trunk/gcc/passes.c:2238
#6 0x0000000000827a17 in execute_pass_list (pass=0x1428060) at
../../gcc-svn/trunk/gcc/passes.c:2239
#7 0x0000000000616688 in expand_function (node=0x7ffff19b1750) at
../../gcc-svn/trunk/gcc/cgraphunit.c:1603
#8 0x000000000061822b in expand_all_functions () at
../../gcc-svn/trunk/gcc/cgraphunit.c:1708
#9 compile () at ../../gcc-svn/trunk/gcc/cgraphunit.c:2007
(gdb) list
872 && HARD_REGISTER_P (cheap)
873 && TEST_HARD_REG_BIT (call_used_reg_set, REGNO
(cheap)))
874 {
875 rtx call_set = single_set (insn);
876 rtx dest = SET_DEST (call_set);
877 rtx pat = gen_rtx_SET (VOIDmode, cheap,
878 copy_rtx (dest));
879 chain = insert_one_insn (chain, 0, -1, pat);
880 }
881 }
(gdb) p call_set
$7 = (rtx_def *) 0x0
(gdb) p debug_rtx (insn)
(call_insn 22 21 25 2 (parallel [
(set (reg:DI 0 ax)
(call (mem:QI (symbol_ref:DI ("memcpy") [flags 0x41]
<function_decl 0x7ffff1aee600 memcpy>) [0 memcpy S1 A8])
(const_int 0 [0])))
(unspec [
(const_int 2 [0x2])
] UNSPEC_CALL_NEEDS_VZEROUPPER)
]) pr53427.c:12 632 {*call_value_vzeroupper}
(expr_list:REG_RETURNED (reg/v/f:DI 2 cx [orig:64 arg ] [64])
(expr_list:REG_DEAD (reg:DI 5 di)
(expr_list:REG_DEAD (reg:DI 4 si)
(expr_list:REG_DEAD (reg:DI 1 dx)
(expr_list:REG_UNUSED (reg:DI 0 ax)
(expr_list:REG_EH_REGION (const_int 0 [0])
(nil)))))))
(expr_list:REG_FRAME_RELATED_EXPR (set (reg:DI 0 ax)
(reg:DI 5 di))
(expr_list:REG_FRAME_RELATED_EXPR (use (reg:DI 5 di))
(expr_list:REG_FRAME_RELATED_EXPR (use (reg:DI 4 si))
(expr_list:REG_FRAME_RELATED_EXPR (use (reg:DI 1 dx))
(nil))))))
As said elsewhere, tagging call insns with vzeroupper unspecs was not a good
idea. While it worked, it is very fragile and not future proof.
Please look at PR 47440. The fix for that PR will magically avoid failures of
this type.