This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/53315] simple xtest program generates ICE


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53315

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-05-10 23:47:57 UTC ---
(define_expand "xbegin"
  [(set (match_operand:SI 0 "register_operand")
        (unspec_volatile:SI [(match_dup 1)] UNSPECV_XBEGIN))]
  "TARGET_RTM"
{
  rtx label = gen_label_rtx ();

  operands[0] = force_reg (SImode, constm1_rtx);

  emit_jump_insn (gen_xbegin_1 (operands[0], label));

  emit_label (label);
  LABEL_NUSES (label) = 1;

  DONE;
})

(define_insn "xbegin_1"
  [(set (pc)
        (if_then_else (ne (unspec [(const_int 0)] UNSPEC_XBEGIN_ABORT)
                          (const_int 0))
                      (label_ref (match_operand 1))
                      (pc)))
   (set (match_operand:SI 0 "register_operand" "+a")
        (unspec_volatile:SI [(match_dup 0)]
                            UNSPECV_XBEGIN))]
  "TARGET_RTM"
  "xbegin\t%l2"
  [(set_attr "type" "other")
   (set_attr "length" "6")])

I think this is the one of the few cases where you want to use + in the
constraint and match_dup.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]