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