On Tue, May 1, 2012 at 12:17 AM, Alan Modra <amo...@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

Reply via email to