[RS6000] .gnu.attributes Tag_GNU_Power_ABI_FP
Extend this attribute to cover long double ABIs, for 64-bit too. This patch also corrects an error that crept in to code setting rs6000_passes_float. See the added comment. Passing IEEE128 values in vsx regs ought to set both Tag_GNU_Power_ABI_FP and Tag_GNU_Power_ABI_Vector. Also adds a new option, default on, that disables output of .gnu_attribute assembly directives. * config/rs6000/sysv4.opt (mgnu-attribute): New option. * doc/invoke.texi: Document it. * config/rs6000/rs6000.c (HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE): Define. (rs6000_passes_float): Comment. (rs6000_passes_long_double): New static var. (call_ABI_of_interest): Return false unless rs6000_gnu_attr is set. (init_cumulative_args): Set up to emit fp .gnu_attribute for ELF 64-bit ABIs as well as 32-bit ELF. Correct rs6000_passes_float to include fp values returned in vectors. Set rs6000_passes_long_double. (rs6000_function_arg_advance_1): Likewise for function args. (rs6000_elf_file_end): Emit fp .gnu_attribute for ELF 64-bit ABIs, and SPE. Emit long double tag value too. (rs6000_opt_vars): Add gnu-attr. * configure.ac (HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE): New ppc32 test. * configure: Regenerate. * config.in: Regenerate. From-SVN: r240601
Showing
- gcc/ChangeLog 20 additions, 0 deletionsgcc/ChangeLog
- gcc/config.in 6 additions, 0 deletionsgcc/config.in
- gcc/config/rs6000/rs6000.c 67 additions, 20 deletionsgcc/config/rs6000/rs6000.c
- gcc/config/rs6000/sysv4.opt 4 additions, 0 deletionsgcc/config/rs6000/sysv4.opt
- gcc/configure 52 additions, 0 deletionsgcc/configure
- gcc/configure.ac 45 additions, 0 deletionsgcc/configure.ac
- gcc/doc/invoke.texi 9 additions, 0 deletionsgcc/doc/invoke.texi
Loading
Please register or sign in to comment