re PR target/81644 (ICE in rtl_verify_bb_insn, BBRO pass duplicates BB that ends with flow control insn)
PR target/81644 * config/i386/i386.md (unspecv): Add UNSPECV_UD2. (ud2): New insn pattern. * config/i386/i386.c (ix86_expand_epilogue): Generate ud2 instead of trap insn. testsuite/ChangeLog: PR target/81644 * gcc.target/i386/pr81644.c: New test. From-SVN: r250830
This commit is contained in:
parent
5e9fab92d1
commit
f462948172
5 changed files with 42 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
|||
2017-08-02 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/81644
|
||||
* config/i386/i386.md (unspecv): Add UNSPECV_UD2.
|
||||
(ud2): New insn pattern.
|
||||
* config/i386/i386.c (ix86_expand_epilogue):
|
||||
Generate ud2 instead of trap insn.
|
||||
|
||||
2017-08-02 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR other/81667
|
||||
|
|
|
@ -15199,7 +15199,7 @@ ix86_expand_epilogue (int style)
|
|||
if (ix86_function_naked (current_function_decl))
|
||||
{
|
||||
/* The program should not reach this point. */
|
||||
emit_insn (gen_trap ());
|
||||
emit_insn (gen_ud2 ());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -201,6 +201,7 @@
|
|||
])
|
||||
|
||||
(define_c_enum "unspecv" [
|
||||
UNSPECV_UD2
|
||||
UNSPECV_BLOCKAGE
|
||||
UNSPECV_STACK_PROBE
|
||||
UNSPECV_PROBE_STACK_RANGE
|
||||
|
@ -18606,6 +18607,18 @@
|
|||
}
|
||||
[(set_attr "length" "2")])
|
||||
|
||||
(define_insn "ud2"
|
||||
[(unspec_volatile [(const_int 0)] UNSPECV_UD2)]
|
||||
""
|
||||
{
|
||||
#ifdef HAVE_AS_IX86_UD2
|
||||
return "ud2";
|
||||
#else
|
||||
return ASM_SHORT "0x0b0f";
|
||||
#endif
|
||||
}
|
||||
[(set_attr "length" "2")])
|
||||
|
||||
(define_expand "prefetch"
|
||||
[(prefetch (match_operand 0 "address_operand")
|
||||
(match_operand:SI 1 "const_int_operand")
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-08-02 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/81644
|
||||
* gcc.target/i386/pr81644.c: New test.
|
||||
|
||||
2017-08-02 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
* gcc.dg/Walloca-14.c: Use relative line number.
|
||||
|
|
15
gcc/testsuite/gcc.target/i386/pr81644.c
Normal file
15
gcc/testsuite/gcc.target/i386/pr81644.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* PR target/81644 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
|
||||
|
||||
void b (void);
|
||||
|
||||
void
|
||||
__attribute__ ((naked))
|
||||
a (int z)
|
||||
{
|
||||
if (z)
|
||||
return;
|
||||
b ();
|
||||
}
|
Loading…
Add table
Reference in a new issue