+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
if (ix86_function_naked (current_function_decl))
{
/* The program should not reach this point. */
- emit_insn (gen_trap ());
+ emit_insn (gen_ud2 ());
return;
}
])
(define_c_enum "unspecv" [
+ UNSPECV_UD2
UNSPECV_BLOCKAGE
UNSPECV_STACK_PROBE
UNSPECV_PROBE_STACK_RANGE
}
[(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")
+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.
--- /dev/null
+/* 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 ();
+}