large SPARC changes
Richard Henderson
rth@cygnus.com
Sat Apr 18 01:43:00 GMT 1998
I must first apologize for being criminally slow in doing something with
your last set of patches. I'd actually sat down and tried to get them
in once or twice, but it kept triggering scheduler bugs and never
bootstrapping, and I never quite got around to fixing whatever it was.
This time, however, everything bootstrapped smoothly, with and without
`-mcpu=ultrasparc -mv8plus'. The changes on the whole look pretty spiff.
> * sparc.c, sparc.h, sparc.md, sol2.h: Many changes related to V9
> code generation. Use 64 bit instructions in 32 bit mode when
> possible. Use V9 return instruction. UltraSPARC optimizations.
>
> * sparc.h: Change gen_rtx (CODE to gen_rtx_CODE (.
These bits I committed.
> * sparc.h (ASM_PIC_SETUP): New macro.
> * sparc.md (get_pc): New pattern, calling function written by
> ASM_PIC_SETUP.
> * sparc.c (pic_setup_code): Update for new get_pc.
> * toplev.c (compile_file)): Call ASM_PIC_SETUP macro if -fpic.
These bits, I modified.
I didn't really like the notion of using a moderately visible
symbol like __get_pc. I prefer that whatever symbol be used be
eliminated by the assembler, so as not to show up in nm and
generally get in the way.
I also didn't think patching toplev was needed, and it had the
disadvantage of always emitting the __get_pc hunk even when it
wasn't needed.
So I changed things to use ASM_GENERATE_INTERNAL_LABEL, and hooked
the helper function-let generation into finalize_pic where it
would be conditional on at least one setting of
current_function_uses_pic_offset_table.
r~
More information about the Gcc
mailing list