This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: rs6000 toc reference rtl again


On Tue, May 1, 2012 at 12:17 AM, Alan Modra <amodra@gmail.com> wrote:

> ? ? ? ?* config/rs6000/predicates.md (input_operand): Don't match
> ? ? ? ?constant pool addresses. ?Remove label_ref, high and plus from
> ? ? ? ?match_code list. ?Remove redundant CONSTANT_P test.
> ? ? ? ?(splat_input_operand): Similarly update match_code list.
> ? ? ? ?(small_toc_ref): New predicate.
> ? ? ? ?* config/rs6000/rs6000-protos.h (toc_relative_expr_p): Update prototype.
> ? ? ? ?* config/rs6000/rs6000.c (tocrel_base, tocrel_offset): Make const.
> ? ? ? ?(legitimate_constant_pool_address_p): Move TARGET_TOC test and
> ? ? ? ?register checks to..
> ? ? ? ?(toc_relative_expr_p): ..here. ?Add "strict" param. ?Match new rtl
> ? ? ? ?generated by create_TOC_reference.
> ? ? ? ?(rs6000_legitimize_address): Update cerate_TOC_reference call.
> ? ? ? ?(rs6000_delegitimize_address): Handle new rtl for toc refs.
> ? ? ? ?(rs6000_cannot_force_const_mem, rs6000_find_base_term): Likewise.
> ? ? ? ?(use_toc_relative_ref): New function, split out from..
> ? ? ? ?(rs6000_emit_move): ..here. ?Remove redundant tests. ?Update
> ? ? ? ?create_TOC_reference calls.
> ? ? ? ?(rs6000_legitimize_reload_address): Formatting. ?Handle splitting
> ? ? ? ?of medium/large model toc addresses. ?Use use_toc_relative_ref.
> ? ? ? ?(print_operand): Formatting, style. ?Adjust for toc changes.
> ? ? ? ?(print_operand_address): Likewise.
> ? ? ? ?(rs6000_output_addr_const_extra): Likewise.
> ? ? ? ?(create_TOC_reference): Put TOC_REGISTER in UNSPEC_TOCREL rather
> ? ? ? ?than a PLUS. ?Use this formulation for both high and low part
> ? ? ? ?of -mcmodel=medium/large toc reference too. ?Before reload,
> ? ? ? ?always use the small model formulation.
> ? ? ? ?* config/rs6000/rs6000.md (tls_gd, tls_gd_high): Similarly avoid
> ? ? ? ?a PLUS in high part of addresses here.
> ? ? ? ?(tls_ld, tls_ld_high, tls_got_dtprel, tls_got_dtprel_high): Likewise.
> ? ? ? ?(tls_got_tprel, tls_got_tprel_high, largetoc_high): Likewise.
> ? ? ? ?(largetoc_high, largetoc_low): Move earlier. ?Cope when no
> ? ? ? ?base reg available.
> ? ? ? ?(largetoc_high_plus): New insn.
> ? ? ? ?(movsi_internal1, movsi_internal1_single, movsf_softfloat,
> ? ? ? ?movdi_mfpgpr, movdi_internal64): Don't handle 'R' constraint here..
> ? ? ? ?(tocref): ..instead do so here, new insn and split.

Okay.

But please add a comment explaining toc_relative_expr_p(), especially
the meaning of the new strict argument.

And please wait for bootstrap to be unbroken on PPC64.

Thanks, David


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]