[bfin] Improve legitimize_pic_address

Jie Zhang jzhang918@gmail.com
Thu Sep 20 11:51:00 GMT 2007


With the patch I posted on gcc mailing list:

http://gcc.gnu.org/ml/gcc/2007-09/msg00421.html

bfin port gcc configures libstdc++ OK. But it failed to build -msep-data 
libstdc++:

libtool: compile:  /home/jie/blackfin-sources/build43/gcc_build-4.3/./gcc/xgcc -shared-libgcc -B/home/jie/blackfin-sources/build43/gcc_build-4.3/./gcc -nostdinc++ -L/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libstdc++-v3/src -L/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libstdc++-v3/src/.libs -nostdinc -B/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/newlib/ -isystem /home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/newlib/targ-include -isystem /home/jie/blackfin-sources/toolchain/trunk/gcc-4.3/newlib/libc/include -B/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libgloss/bfin -L/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libgloss/libnosys -L/home/jie/blackfin-sources/toolchain/trunk/gcc-4.3/libgloss/bfin -B/home/jie/installs/bfin-43/bfin-elf/bin/ -B/home/jie/installs/bfin-43/bfin-elf/lib/ -isystem /home/jie/installs/bfin-43/bfin-elf/include -isy
stem /home/jie/installs/bfin-43/bfin-elf/sys-include -msep-data -I/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libstdc++-v3/include/bfin-elf -I/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libstdc++-v3/include -I/home/jie/blackfin-sources/toolchain/trunk/gcc-4.3/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -g -O2 -msep-data -c /home/jie/blackfin-sources/toolchain/trunk/gcc-4.3/libstdc++-v3/src/complex_io.cc -o complex_io.o
/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libstdc++-v3/include/complex: In function 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::complex<_Tp>&) [with _Tp = double, _CharT = char, _Traits = std::char_traits<char>]':
/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libstdc++-v3/include/complex:528: internal compiler error: in legitimize_pic_address, at config/bfin/bfin.c:325
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[8]: *** [complex_io.lo] Error 1
make[8]: Leaving directory `/home/jie/blackfin-sources/build43/gcc_build-4.3/bfin-elf/msep-data/libstdc++-v3/src'


legitimize_pic_address tried to legitimize

(const:SI (plus:SI (symbol_ref:SI ("_ZNSs4_Rep20_S_empty_rep_storageE"))
        (const_int 12)))

It put the SYMBOL_REF in (reg:SI 9 P1). But it failed to legitmize (const_int 12), since reload_in_progress == 1 and it could not force it in a register.

Since Blackfin has instructions like

DPREGS += IMM7

we need not force such immediates into a register. This patch does that.

Is it OK?


Jie
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bfin-fix-legitimize-pic-address.diff
Type: text/x-patch
Size: 735 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20070920/673af9e7/attachment.bin>


More information about the Gcc-patches mailing list