This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 6/9] S/390: Get rid of Y constraint in tabort.
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: krebbel at linux dot vnet dot ibm dot com (Andreas Krebbel)
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Mon, 1 Feb 2016 14:36:33 +0100 (CET)
- Subject: Re: [PATCH 6/9] S/390: Get rid of Y constraint in tabort.
- Authentication-results: sourceware.org; auth=none
Andreas Krebbel wrote:
> (define_insn "*tabort_1"
> - [(unspec_volatile [(match_operand:SI 0 "shift_count_or_setmem_operand" "Y")]
> + [(unspec_volatile [(match_operand:SI 0 "addrreg_or_constint_operand" "a,n")]
> UNSPECV_TABORT)]
> "TARGET_HTM && operands != NULL"
> - "tabort\t%Y0"
> + "@
> + tabort\t0(%0)
> + tabort\t%0"
> + [(set_attr "op_type" "S")])
> +
> +(define_insn "*tabort_1_plus"
> + [(unspec_volatile [(plus:SI (match_operand:SI 0 "register_operand" "a")
> + (match_operand:SI 1 "const_int_operand" "J"))]
> + UNSPECV_TABORT)]
> + "TARGET_HTM && operands != NULL"
> + "tabort\t%1(%0)"
This seems dangerous: const_int_operand may match a constant that does
not fit into the "J" constraint, which would lead to an abort in reload.
What is the semantics for the abort code anyway? It is supposed to be
automatically truncated or not?
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU/Linux compilers and toolchain
Ulrich.Weigand@de.ibm.com