This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/31123] New: FAIL: gcc.c-torture/execute/builtin-bitops-1.c compilation, -O3 ...
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Mar 2007 18:06:13 -0000
- Subject: [Bug target/31123] New: FAIL: gcc.c-torture/execute/builtin-bitops-1.c compilation, -O3 ...
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Executing on host: /home/dave/gnu/gcc-4.3/objdir/gcc/xgcc
-B/home/dave/gnu/gcc-4
.3/objdir/gcc/
/home/dave/gnu/gcc-4.3/gcc/gcc/testsuite/gcc.c-torture/execute/bu
iltin-bitops-1.c -w -O3 -fomit-frame-pointer -funroll-loops -fno-show-column
-lm -o /home/dave/gnu/gcc-4.3/objdir/gcc/testsuite/gcc/builtin-bitops-1.x4
(timeout = 300)
/tmp/ccSKCJDe.s: Assembler messages:
/tmp/ccSKCJDe.s:8021: Error: Field out of range [1..32] (0).
/tmp/ccSKCJDe.s:8021: Error: Invalid operands
/tmp/ccSKCJDe.s:8105: Error: Field out of range [1..32] (0).
/tmp/ccSKCJDe.s:8105: Error: Invalid operands
compiler exited with status 1
output is:
/tmp/ccSKCJDe.s: Assembler messages:
/tmp/ccSKCJDe.s:8021: Error: Field out of range [1..32] (0).
/tmp/ccSKCJDe.s:8021: Error: Invalid operands
/tmp/ccSKCJDe.s:8105: Error: Field out of range [1..32] (0).
/tmp/ccSKCJDe.s:8105: Error: Invalid operands
FAIL: gcc.c-torture/execute/builtin-bitops-1.c compilation, -O3
-fomit-frame-po
inter -funroll-loops
The problem is this instruction:
zdep %r29,2,0,%r20
The third operand is the length for the deposit. A length of zero isn't
allowed. Valid lengths are from 1 to 32.
This is the pattern which generated the above instruction:
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "const_int_operand" ""))
(match_operand:SI 3 "const_int_operand" "")))]
"exact_log2 (1 + (INTVAL (operands[3]) >> (INTVAL (operands[2]) & 31))) >= 0"
"*
{
int cnt = INTVAL (operands[2]) & 31;
operands[3] = GEN_INT (exact_log2 (1 + (INTVAL (operands[3]) >> cnt)));
operands[2] = GEN_INT (31 - cnt);
return \"{zdep|depw,z} %1,%2,%3,%0\";
}"
[(set_attr "type" "shift")
(set_attr "length" "4")])
The RTL that generated the instruction is:
(insn:TI 8138 3652 33318 (set (reg/v:SI 20 %r20 [orig:2429 count ] [2429])
(and:SI (ashift:SI (reg:SI 29 %r29 [1812])
(const_int -3 [0xfffffffd]))
(const_int 1 [0x1]))) 195 {*pa.md:7267} (nil)
(nil))
--
Summary: FAIL: gcc.c-torture/execute/builtin-bitops-1.c
compilation, -O3 ...
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
GCC build triplet: hppa*-*-*
GCC host triplet: hppa*-*-*
GCC target triplet: hppa*-*-*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31123