On 10/20/2011 07:41 AM, Paulo J. Matos wrote:
> (define_insn_and_split "neghi_internal"
>[(set (match_operand:QI 0 "register_operand" "=c")
> (neg:QI (match_dup 0)))
> (set (match_operand:QI 1 "register_operand" "=c")
> (plus:QI
>(plus:QI
> (ltu:QI
Quoting "Paulo J. Matos" :
This is a very strange insn indeed:
(set (ge (reg:QI 0 AH [orig:26 w ] [26])
(const_int 0 [0]))
(plus:QI (plus:QI (ltu:QI (reg:CC 13 CC)
(const_int 0 [0]))
(lt (reg:QI 0 AH [orig:30 a ] [30])
(const_int 0 [0])))
On 21/10/11 10:02, Paolo Bonzini wrote:
On 10/20/2011 07:46 PM, Paulo J. Matos wrote:
However, it failed to compile libgcc with:
../../../../../../../devHost/gcc46/gcc/libgcc/../gcc/libgcc2.c:272:1:
internal compiler error: in df_uses_record, at df-scan.c:3178
This feels like a GCC bug. I will
On 10/20/2011 07:46 PM, Paulo J. Matos wrote:
However, it failed to compile libgcc with:
../../../../../../../devHost/gcc46/gcc/libgcc/../gcc/libgcc2.c:272:1:
internal compiler error: in df_uses_record, at df-scan.c:3178
This feels like a GCC bug. I will try to get a better look at it tomorrow.
On 20/10/11 18:12, Joern Rennecke wrote:
Or just change the constraint to "+c" .
After trying Ulrichs suggestion and getting it to work I decided to give
yours a try since it looked cleaner using +c and dups elsewhere.
However, it failed to compile libgcc with:
../../../../../../../devHost
On 20/10/11 16:25, Ulrich Weigand wrote:
When reload looks at the above pattern, it will see just
two operands, both of which are output-only. So when it
decides to reload one of the operands, it will only provide
an output reload, no input reload.
For operands that are actually used for both
Quoting Ulrich Weigand :
Paulo J. Matos wrote:
(define_insn_and_split "neghi_internal"
[(set (match_operand:QI 0 "register_operand" "=c")
(neg:QI (match_dup 0)))
(set (match_operand:QI 1 "register_operand" "=c")
(plus:QI
(plus:QI
(ltu:QI (
Paulo J. Matos wrote:
> (define_insn_and_split "neghi_internal"
> [(set (match_operand:QI 0 "register_operand" "=c")
> (neg:QI (match_dup 0)))
> (set (match_operand:QI 1 "register_operand" "=c")
> (plus:QI
> (plus:QI
> (ltu:QI (neg:QI (match_d