Incorrectly generated assembler on linux-alpha
Mike Stump
mrs@wrs.com
Wed Dec 2 11:52:00 GMT 1998
> Date: Wed, 2 Dec 1998 07:54:16 +0100
> From: Torsten Ekedahl <teke@matematik.su.se>
> To: egcs-bugs@cygnus.com
> leads to error messages of the type
> cl_nt_sqrtmodp.s: Assembler messages:
> cl_nt_sqrtmodp.s:38292: Error: Can't emit reloc {- *UND*-seg symbol
> "$L68586"} @ file address 145628.
> cl_nt_sqrtmodp.s:38292: Error: Value of 145628 too large for field of
> 2 bytes at 145628
> the offending line 38292 is
> ldgp $29,$LSJ72261-$L68586($27)
> This may have something to do with the fact that the .s file is *very*
> large:
Yes, this looks like it was put in by:
Mon Feb 2 19:18:14 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (nonlocal_goto_receiver_osf): Delete.
(nonlocal_goto_receiver_vms): Rename to nonlocal_goto_receiver.
(builtin_longjmp, builtin_setjmp_receiver): New.
(define_insn "builtin_setjmp_receiver"
[(unspec_volatile [(match_operand 0 "" "")] 2)]
"! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT && TARGET_AS_CAN_SUBTRACT_LABELS"
"\\n$LSJ%=:\;ldgp $29,$LSJ%=-%l0($27)"
[(set_attr "length" "8")
(set_attr "type" "multi")])
The sequence might have to be changed to be 32 (or 64 bit) safe...
and if the compiler can tell the label is near enough, then optimize
it to be this sequence.
More information about the Gcc-bugs
mailing list