This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/66048] [i386] ICE in create_pre_exit when both AVX and MPX are used
- From: "ienkovich at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 08 May 2015 12:11:35 +0000
- Subject: [Bug rtl-optimization/66048] [i386] ICE in create_pre_exit when both AVX and MPX are used
- Auto-submitted: auto-generated
- References: <bug-66048-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66048
--- Comment #2 from Ilya Enkovich <ienkovich at gcc dot gnu.org> ---
(In reply to UroÅ Bizjak from comment #1)
> There is a *very* picky assert in mode-switching.c that otherwise allows
> various exceptions when expected sequence:
>
> (set (reg X) ...)
>
> (use (reg X))
With MPX we have multiple (use (reg X)) and only the last one is examined. It
is always the one created for bounds. Simple swap makes it work. With this
patch test passes:
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -5224,8 +5224,8 @@ diddle_return_value_1 (void (*doit) (rtx, void *), void
*arg, rtx outgoing)
void
diddle_return_value (void (*doit) (rtx, void *), void *arg)
{
- diddle_return_value_1 (doit, arg, crtl->return_rtx);
diddle_return_value_1 (doit, arg, crtl->return_bnd);
+ diddle_return_value_1 (doit, arg, crtl->return_rtx);
}
static void