• rth's avatar
    PR target/21412 · 3ec3c84f
    rth authored
            * config/ia64/ia64.c (TARGET_CANNOT_FORCE_CONST_MEM): New.
            (ia64_cannot_force_const_mem): New.
            (tls_symbolic_operand_type): New.
            (ia64_legitimate_constant_p): New.
            (ia64_expand_load_address): Return true on success.  Improve
            checks for when we should not split.
            (ia64_expand_tls_address): New addend operand.  Distribute it
            as appropriate to the tls_kind.  Delay referencing gp.
            (ia64_expand_move): Split symbolic addend as necessary.  Handle
            tls symbols with addends.
            * config/ia64/ia64-protos.h: Update.
            * config/ia64/ia64.h (CALL_REALLY_USED_REGISTERS): False for r0,
            p0, f0, f1, and r13.
            (LEGITIMATE_CONSTANT_P): Move to ia64_legitimate_constant_p.
            * config/ia64/ia64.md (UNSPEC_DTPMOD): New.
            (symbolic_operand splitter): Pass everything through
            ia64_expand_load_address and FAIL or DONE as appropriate.
            (load_fptr): Only accept after reload.
            (load_fptr_internal1, gprel64_offset, load_gprel64, load_symptr_high,
            load_symptr_low, load_ltoff_dtpmod,
            (load_dtpmod): New.
            (load_dtprel): Only accept tls symbols.
            (load_dtprel64, load_dtprel22): Likewise.
            (load_tprel, load_tprel64, load_tprel22): Likewise.
            (load_dtprel_gd, load_ltoff_dtprel, load_tprel_ie): New.
            (add_dtprel): Only accept tls symbols.  Canonicalize PLUS.
            (add_dtprel14, add_dtprel22): Likewise.
            (add_tprel, add_tprel14, add_tprel22): Likewise.
            * config/ia64/predicates.md (small_addr_symbolic_operand): New.
            (any_offset_symbol_operand, aligned_offset_symbol_operand): New.
            (got_symbolic_operand): Check CONST offsets.
            (tls_symbolic_operand, ld_tls_symbolic_operand): New.
            (ie_tls_symbolic_operand, le_tls_symbolic_operand): New.
            (move_operand): Don't handle tls here.  Check CONST offsets.
    
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99596 138bc75d-0d04-0410-961f-82ee72b054a4
    3ec3c84f
ia64.h 76.9 KB