[Bug target/61586] ICE on alpha in alpha_handle_trap_shadows, at config/alpha/alpha.c:8724
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Jun 24 18:34:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61586
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Richard Henderson from comment #3)
> (In reply to Uroš Bizjak from comment #2)
> > (I also wonder why we have to break the loop for naked USEs and CLOBBERs. We
> > should just skip the problematic insn and continue - as proposed in the
> > above patch).
>
> Because it's not breaking out of the loop, it's breaking
> out of the switch, case INSN.
>
> I don't think we should special-case TRAP_IF, but rather
> special-case BARRIER. Suppose some -O0 test case involving
> __builtin_unreachable, which expands to no code at all.
>
> Otherwise, I think the close_shadow_notrapb change is good.
Thanks for the comment (and the eye opener ;) ). Following is the patch I'm
going to regtest:
--cut here--
Index: alpha.c
===================================================================
--- alpha.c (revision 211941)
+++ alpha.c (working copy)
@@ -8717,6 +8781,11 @@
}
break;
+ case BARRIER:
+ /* __builtin_unreachable can expand to no code at all,
+ leaving (barrier) RTXes in the instruction stream. */
+ goto close_shadow_notrapb;
+
case JUMP_INSN:
case CALL_INSN:
case CODE_LABEL:
@@ -8732,6 +8801,7 @@
n = emit_insn_before (gen_trapb (), i);
PUT_MODE (n, TImode);
PUT_MODE (i, TImode);
+ close_shadow_notrapb:
trap_pending = 0;
shadow.used.i = 0;
shadow.used.fp = 0;
--cut here--
More information about the Gcc-bugs
mailing list