c++/4587: g++ -maix64 generates illeagal assembler code
Kouichi Hashikawa
hashikaw@awa.tohoku.ac.jp
Wed Oct 24 21:20:00 GMT 2001
I want to modify my problem report.
How-To-Repeat:
% setenv OBJECT_MODE 64
% g++ -maix64 -g -o bigfile2 bigfile2.cc -save-temps -v
Fix:
gcc-3.0.1 generated following assembler code.
this code passed to AIX's /usr/ccs/bin/as.
96890 bl ._ZNSolsEPFRSoS_E
96891 nop
96892 .line 4096
96893 ld 3,LC..1(2)
96894 ld 4,LC..8191(2)
96895 bl ._ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
96896 nop
96897 mr 0,3
96898 ld 4,LC..3(2)
96899 bl ._ZNSolsEPFRSoS_E
96900 nop
96901 .line 4097
96902 ld 3,LC..1(2)
96903 ld 4,LC..8193(2)
96904 bl ._ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
96905 nop
96906 mr 0,3
96907 ld 4,LC..3(2)
96908 bl ._ZNSolsEPFRSoS_E
96909 nop
96910 .line 4098
96911 ld 3,LC..1(2)
96912 ld 4,LC..8195(2)
96913 bl ._ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
96914 nop
IBM AIX development team says:
Problem is with g++ compiler. You are hitting the
hardware limitation. To make it clear consider an opcode
.
ld r4,X(r3);
.
where X will be at most 16 bit.
So irrespective of 64bit or 32 bit object file
we can traverse an offset value of 16 bit.
While creating the assembly listing g++ crossed
the limitation. So assembler throws series of error
messages.
More information about the Gcc-bugs
mailing list