2012-08-24 H.J. Lu PR debug/52857 * dwarf2out.c (mem_loc_descriptor): Allow arg_pointer_rtx and frame_pointer_rtx for based_loc_descr. 2012-06-29 H.J. Lu PR target/53539 * config/i386/gnu-user64.h (WCHAR_TYPE): Use "int" only for TARGET_LP64. 2012-06-05 H.J. Lu PR target/53575 * config.gcc: Select x32 run-time library if --with-abi={x32|mx32} is used for x86_64-*-*. 2012-05-16 H.J. Lu * configure: Regenerated. 2012-04-25 H.J. Lu PR debug/52857 * dwarf2out.c (dbx_reg_number): Assert return value != INVALID_REGNUM. 2012-04-11 H.J. Lu * config/host-linux.c (TRY_EMPTY_VM_SPACE): Defined to 0x60000000 if __x86_64 is defined and __LP64__ isn't defined. 2012-04-11 H.J. Lu PR rtl-optimization/52876 * emit-rtl.c (set_reg_attrs_from_value): Handle arbitrary value. Don't call mark_reg_pointer for incompatible pointer sign extension. * reginfo.c (reg_scan_mark_refs): Call set_reg_attrs_from_value directly. 2012-04-11 H.J. Lu * config/i386/i386.c (ix86_option_override_internal): Check SUBTARGET_OVERRIDE_OPTIONS and SUBSUBTARGET_OVERRIDE_OPTIONS after TARGET_64BIT is updated. 2012-04-09 Uros Bizjak PR target/52883 * config/i386/predicates.md (x86_64_zext_general_operand): Prevent VOIDmode immediate operands. * config/i386/constraints.md (Wz): New constraint. * config/i386/i386.md (*zero_extendsidi2_rex64): Use Wz instead of Z. 2012-04-05 Uros Bizjak PR target/52882 * config/i386/i386.c (ix86_decompose_address): Allow VOIDmode CONST_INT operands, zero-extended with AND. 2012-04-02 H.J. Lu * config.gcc: Use i386/biarchx32.h instead of i386/biarch64.h for --with-abi={x32|mx32} or --with-multilib-list=mx32. (supported_defaults): Add abi for i[34567]86-*-* and x86_64-*-*. * config/i386/biarchx32.h: New. 2012-03-31 H.J. Lu PR bootstrap/52784 * config/i386/i386.c (ix86_option_override_internal): Don't check TARGET_64BIT if TARGET_64BIT_DEFAULT is false. 2012-03-28 H.J. Lu * config/i386/biarch64.h (TARGET_64BIT_DEFAULT): Add OPTION_MASK_ABI_64. * config/i386/gnu-user64.h (SPEC_64): Support TARGET_BI_ARCH == 2. (SPEC_X32): Likewise. (MULTILIB_DEFAULTS): Likewise. * config/i386/i386.c (isa_opts): Remove -m64. (ix86_target_string): Properly handle -m32/-m64/-mx32. (ix86_option_override_internal): Properly set OPTION_MASK_ISA_64BIT and OPTION_MASK_ISA_X32 as well as handle -m32, -m64 and -mx32. * config/i386/i386.h (TARGET_X32): Replace OPTION_ISA_X32 with OPTION_ABI_X32. Moved after TARGET_LP64. (TARGET_LP64): Changed to OPTION_ABI_64. * config/i386/i386.opt (m64): Replace ISA_64BIT with ABI_64. (mx32): Replace ISA_X32 with ABI_X32. 2012-03-27 H.J. Lu * config/arm/arm.opt (mapcs): Remove MaskExists. * config/cris/linux.opt (mno-gotplt): Likewise. * config/i386/i386.opt (mhard-float): Likewise. (msse4): Likewise. (mno-sse4): Likewise. * config/m68k/m68k.opt (mhard-float): Likewise. * config/mep/mep.op (mcop32): Likewise. * config/pa/pa-hpux.opt (msio): Likewise. * config/pa/pa64-hpux.opt (mgnu-ld): Likewise. * config/picochip/picochip.opt (mlittle): Likewise. * config/sh/sh.opt (mrenesas): Likewise. * config/sparc/long-double-switch.opt (mlong-double-128): Likewise. * config/sparc/sparc.opt (mhard-float): Likewise. * config/v850/v850.opt (mv850es): Likewise. * config/vax/vax.opt (mg-float): Likewise. 2012-03-27 H.J. Lu * opth-gen.awk: Allocated a bit for Mask and InverseMask if it hasn't been allocated. Define a target macro for Mask and InverseMask if it hasn't been defined. Remove MaskExists handling. * doc/options.texi: Remove MaskExists. 2012-03-14 H.J. Lu PR target/50797 * config/i386/i386-opts.h (pmode): New. * config/i386/i386.c (ix86_option_override_internal): Properly check and set ix86_pmode. * config/i386/i386.h (Pmode): Check ix86_pmode instead of TARGET_64BIT. * config/i386/i386.opt (maddress-mode=): New. * doc/invoke.texi: Document -maddress-mode=short|long for x86. 2012-03-20 Jakub Jelinek * config/i386/i386.c (ix86_decompose_address) : If operand isn't UNSPEC, return 0. 2012-03-19 Uros Bizjak * config/i386/i386.c (get_thread_pointer): Add tp_mode argument. Generate ZERO_EXTEND in place if GET_MODE (tp) != tp_mode. (legitimize_tls_address) : Always generate DImode UNSPEC_GOTNTPOFF references on TARGET_64BIT. (ix86_decompose_address): Allow zero extended UNSPEC_TP references. 2012-03-13 Uros Bizjak * config/i386/i386.c (ix86_decompose_address): Handle subregs of AND zero extended address correctly. 2012-03-13 Uros Bizjak * config/i386/predicates.md (tls_symbolic_operand): Declare as special predicate. (tls_modbase_operand): Ditto. * config/i386/i386.md: Remove mode from tls_symbolic_operand and tls_modbase_operand predicates. 2012-03-13 Uros Bizjak * config/i386/i386.c (ix86_decompose_address): Prevent %fs:(%reg) addresses only when %reg is not in word mode. 2012-03-12 H.J. Lu * config/i386/i386.md (*tls_global_dynamic_64_): Remove :P on tls_symbolic_operand. (tls_global_dynamic_64_): Likewise. 2012-03-12 H.J. Lu * config/i386/i386.c (ix86_gen_tls_global_dynamic_64): New. (ix86_gen_tls_local_dynamic_base_64): Likewise. (ix86_option_override_internal): Set ix86_gen_tls_global_dynamic_64 and ix86_gen_tls_local_dynamic_base_64. (legitimize_tls_address): Use ix86_gen_tls_global_dynamic_64 and ix86_gen_tls_local_dynamic_base_64. * config/i386/i386.md (*tls_global_dynamic_64): Renamed to ... (*tls_global_dynamic_64_): This. (tls_global_dynamic_64): Renamed to ... (tls_global_dynamic_64_): This. (*tls_local_dynamic_base_64): Renamed to ... (*tls_local_dynamic_base_64_): This. (tls_local_dynamic_base_64): Renamed to ... (tls_local_dynamic_base_64_): This. 2012-03-12 H.J. Lu * config/i386/i386.c (ix86_option_override_internal): Properly set ix86_gen_leave and ix86_gen_monitor. Check Pmode == DImode, instead of TARGET_64BIT, to set ix86_gen_add3, ix86_gen_sub3, ix86_gen_one_cmpl2, ix86_gen_andsp, ix86_gen_allocate_stack_worker, ix86_gen_adjust_stack_and_probe and ix86_gen_probe_stack_range. * config/i386/sse.md (sse3_monitor64): Renamed to ... (sse3_monitor64_): This. 2012-03-11 H.J. Lu * config/i386/i386.c (ix86_expand_movmem): Use word_mode for size needed for loop. (ix86_expand_setmem): Likewise. 2012-03-11 Uros Bizjak * config/i386/i386.c (ix86_zero_extend_to_Pmode): Rewrite using convert_to_mode. 2012-03-11 H.J. Lu * config/i386/i386.c (ix86_trampoline_init): Use movl for 64bit if ptr_mode == SImode. Replace DImode with Pmode or ptr_mode. 2012-03-11 H.J. Lu * config/i386/i386.c (x86_this_parameter): Replace DImode with Pmode. 2012-03-11 H.J. Lu * config/i386/i386.md (lwp_slwpcb): Check Pmode instead of TARGET_64BIT. 2012-03-11 H.J. Lu Uros Bizjak * config/i386/predicates.md (call_insn_operand): Allow constant_call_address_operand in Pmode only. (sibcall_insn_operand): Ditto. * config/i386/i386.md (*call): Use W mode iterator instead of P mode. (*call_vzeroupper): Ditto. (*sibcall): Ditto. (*sibcall_vzeroupper): Ditto. (*call_value): Ditto. (*call_value_vzeroupper): Ditto. (*sibcall_value): Ditto. (*sibcall_value_vzeroupper): Ditto. (*indirect_jump): Ditto. (*tablejump_1): Ditto. (indirect_jump): Convert memory address to word mode for TARGET_X32. (tablejump): Ditto. * config/i386/i386.c (ix86_expand_call): Convert indirect operands to word mode. 2012-03-08 H.J. Lu * config/i386/i386.c (setup_incoming_varargs_64): Use word_mode with integer parameters in registers. (gen_push): Push register in word_mode instead of Pmode. (ix86_emit_save_regs): Likewise. (ix86_emit_save_regs_using_mov): Save integer registers in word_mode. (gen_pop): Pop register in word_mode instead of Pmode. (ix86_emit_restore_regs_using_pop): Likewise. (ix86_expand_prologue): Replace Pmode with word_mode for push immediate. Use ix86_gen_pro_epilogue_adjust_stack. Save and restore RAX and R10 in word_mode. (ix86_emit_restore_regs_using_mov): Restore integer registers in word_mode. (ix86_expand_split_stack_prologue): Save R10_REG and restore in word_mode. (ix86_split_to_parts): Use word_mode with PUT_MODE for push. (ix86_split_long_move): Likewise. * config/i386/i386.md (W): New. (*push2_prologue): Replace :P with :W. (*pop1): Likewise. (*pop1_epilogue): Likewise. (push/pop peephole2): Use word_mode scratch registers. 2012-03-09 Uros Bizjak PR target/52530 * config/i386/i386.c (ix86_print_operand): Handle 'E' operand modifier. (ix86_print_operand_address): Handle UNSPEC_LEA_ADDR. Do not fallback to set code to 'q'. * config/i386/i386.md (UNSPEC_LEA_ADDR): New unspec. (*movdi_internal_rex64): Use %E operand modifier for lea. (*movsi_internal): Ditto. (*lea_1): Ditto. (*lea_2): Ditto. (*lea_{3,4,5,6}_zext): Ditto. (*tls_global_dynamic_32_gnu): Ditto. (*tls_global_dynamic_64): Ditto. (*tls_dynamic_gnu2_lea_32): Ditto. (*tls_dynamic_gnu2_lea_64): Ditto. (pro_epilogue_adjust_stack__add): Ditto. 2012-03-08 Uros Bizjak * config/i386/predicates.md (indirect_branch_operand): Simplify. 2012-03-07 Uros Bizjak * config/i386/predicates.md (x86_64_zext_general_operand): New. * config/i386/i386.md (*zero_extendsidi2_rex64): Change operand 1 predicate to x86_64_zext_general_operand. Accept "Z" constraint. 2012-03-07 Uros Bizjak * config/i386/i386.c (ix86_print_operand_punct_valid_p): Add '^'. (ix86_print_operand): Handle '^'. * config/i386/i386.md (*strmovdi_rex_1): Macroize memory operands using P mode iterator. Add %^ to asm template to conditionally emit addr32 prefix. (*rep_movdi_rex64): Ditto. (*strsetdi_rex_1): Ditto. (*rep_stosdi_rex64): Ditto. (*strmov{si,hi,qi}_1): Add %^ to asm template to conditionally emit addr32 prefix. (*rep_mov{si,qi}): Ditto. (*strset{si,hi,qi}): Ditto. (*rep_stos{si,qi}): Ditto. (*cmpstrnqi_nz_1): Ditto. (*cmpstrnqi_1): Ditto. (*strlenqi_1): Ditto. 2012-03-07 H.J. Lu * config/i386/i386.c (function_value_64): Return pointers in word_mode instead of Pmode. (ix86_promote_function_mode): Likewise. 2012-03-04 H.J. Lu * config/i386/i386.c (pro_epilogue_adjust_stack): Check Pmode instead of TARGET_64BIT. 2012-03-04 H.J. Lu * config/i386/i386.c (ix86_expand_prologue): Check Pmode to set adjust_stack_insn.