memory addressed by memory, error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am working on a new port for a 16 bit target.

In some tests from gcc.c-torture, there are internal errors due to
unrecognizable insn.
More precisely, it is about moving an operand which is memory
addressed by memory (impossible on the target).
_________________________________gcc/testsuite/gcc/gcc.log___(cuts)_______________________________
Executing on host: /home/guest1/gcc/build_target/gcc/xgcc
-B/home/guest1/gcc/build_target/gcc/   -O3 -fomit-frame-pointer
-funroll-loops  -w -fno-show-column -c  -o pr34458.o
/home/guest1/gcc/gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr34458.c
   (timeout = 300)
/home/guest1/gcc/gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr34458.c:
In function 'lint_operate':
/home/guest1/gcc/gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr34458.c:16:
error: unrecognizable insn:
(insn 467 277 278 6
/home/guest1/gcc/gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr34458.c:13
(set (reg:HI 0 r0 [101])
        (mem/s/c:HI (mem/c:HI (plus:HI (reg/f:HI 5 r5)
                    (const_int -2056 [0xfffff7f8])) [10 S2 A16]) [4
a.data S2 A16])) -1 (nil))
/home/guest1/gcc/gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr34458.c:16:
internal compiler error: in extract_insn, at recog.c:1990
____________________________________________________________________________________________

I faced this kind of problem earlier and I solved them by reviewing
GO_IF_LEGITIMATE_ADDRESS. Now I know
this part is rightly implemented. For the error above, I have the
proof that GO_IF_LEGITIMATE_ADDRESS rejects
the address (mem/c:HI (plus:HI (reg/f:HI 5 r5) (const_int -2056
[0xfffff7f8])) [10 S2 A16]), which is alright.

I tried to dump all and to look after the insn 467:

$ target-gcc -S pr34458.c -O3 -funroll-loops -da
pr34458.c: In function ‘lint_operate’:
pr34458.c:16: error: unrecognizable insn:
(insn 467 277 278 6 pr34458.c:13 (set (reg:HI 0 r0 [101])
        (mem/s/c:HI (mem/c:HI (plus:HI (reg/f:HI 5 r5)
                    (const_int -2056 [0xfffff7f8])) [10 S2 A16]) [4
a.data S2 A16])) -1 (nil))
pr34458.c:16: internal compiler error: in extract_insn, at recog.c:1990
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
$ grep 467 pr34458.c.*
$

So insn 467 appears in none dump file.
I looked at 277 and 278 in dump files but it did not help at finding
out the cause of this error.

The last dump file where 277 and 278 appear is pr34458.c.205r.shorten:
_______________________________pr34458.c.205r.shorten___(cuts)__________________
(insn 277 4 278 pr34458.c:9 (set (mem:HI (plus:HI (reg/f:HI 6 sp)
                (const_int -2 [0xfffffffe])) [0 S2 A16])
        (reg/f:HI 5 r5)) -1 (nil))

(insn 278 277 279 pr34458.c:9 (set (reg/f:HI 5 r5)
        (reg/f:HI 6 sp)) -1 (nil))
___________________________________________________________________________

Have you any idea about the cause of such an error?
Thank you.

Regards.

Florent


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux