aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-07-29re PR target/47715 ([x32] TLS doesn't work)Uros Bizjak4-12/+81
PR target/47715 * config/i386/i386.md (*load_tp_x32): New. (*load_tp_x32_zext): Ditto. (*add_tp_x32): Ditto. (*add_tp_x32_zext): Ditto. (*load_tp_<mode>): Disable for TARGET_X32 targets. (*add_tp_<mode>): Ditto. * config/i386/i386.c (get_thread_pointer): Load thread pointer in ptr_mode and convert to Pmode if needed. From-SVN: r176924
2011-07-29re PR target/49687 ([avr] Missed optimization for widening MUL)Georg-Johann Lay2-0/+17
PR target/49687 * config/avr/avr.md (mulsi3, *mulsi3, mulu<mode>si3, muls<mode>si3, mulohisi3, mulhisi3, umulhisi3, usmulhisi3, *<any_extend:extend_prefix><any_extend2:extend_prefix>mul<QIHI:mode><QIHI2:mode>si3): Add X to register footprint: Clobber r26/r27. From-SVN: r176923
2011-07-29builtins.c (fold_builtin_signbit): Build the comparison with a proper type.Richard Guenther2-2/+8
2011-07-29 Richard Guenther <rguenther@suse.de> * builtins.c (fold_builtin_signbit): Build the comparison with a proper type. From-SVN: r176922
2011-07-29re PR middle-end/49893 (-O3 generates wrong code for volatile)Richard Guenther2-0/+7
2011-07-29 Richard Guenther <rguenther@suse.de> PR tree-optimization/49893 * tree-predcom.c (suitable_reference_p): Volatile references are not suitable. From-SVN: r176921
2011-07-29re PR target/49313 (Inefficient libgcc implementations for avr)Georg-Johann Lay3-19/+355
PR target/49313 * config/avr/libgcc.S (__ffshi2): Don't skip 2-word instruction. (__ctzsi2): Result for 0 may be undefined. (__ctzhi2): Result for 0 may be undefined. (__popcounthi2): Don't clobber r30. Use __popcounthi2_tail. (__popcountsi2): Ditto. And don't clobber r26. (__popcountdi2): Ditto. And don't clobber r27. * config/avr/avr.md (UNSPEC_COPYSIGN): New c_enum. (parityhi2): New expand. (paritysi2): New expand. (popcounthi2): New expand. (popcountsi2): New expand. (clzhi2): New expand. (clzsi2): New expand. (ctzhi2): New expand. (ctzsi2): New expand. (ffshi2): New expand. (ffssi2): New expand. (copysignsf3): New insn. (bswapsi2): New expand. (*parityhi2.libgcc): New insn. (*parityqihi2.libgcc): New insn. (*paritysihi2.libgcc): New insn. (*popcounthi2.libgcc): New insn. (*popcountsi2.libgcc): New insn. (*popcountqi2.libgcc): New insn. (*popcountqihi2.libgcc): New insn-and-split. (*clzhi2.libgcc): New insn. (*clzsihi2.libgcc): New insn. (*ctzhi2.libgcc): New insn. (*ctzsihi2.libgcc): New insn. (*ffshi2.libgcc): New insn. (*ffssihi2.libgcc): New insn. (*bswapsi2.libgcc): New insn. From-SVN: r176920
2011-07-29re PR tree-optimization/47407 (gcc.dg/tree-ssa/pr42585.c FAILs on Tru64 UNIX ↵Rainer Orth2-2/+9
V5.1B) PR tree-optimization/47407 * gcc.dg/tree-ssa/pr42585.c: XFAIL scan-tree-dump-times on alpha*-dec-osf*. Sort target list. From-SVN: r176919
2011-07-29tree-vrp.c (get_value_range): Only set parameter default definitions to ↵Richard Guenther5-9/+32
varying, leave others at undefined. 2011-07-29 Richard Guenther <rguenther@suse.de> * tree-vrp.c (get_value_range): Only set parameter default definitions to varying, leave others at undefined. (extract_range_from_binary_expr): Fix undefined handling. (vrp_visit_phi_node): Handle merged undefined state. * gcc.dg/uninit-suppress.c: Also disable VRP. * gcc.dg/uninit-suppress_2.c: Likewise. From-SVN: r176918
2011-07-29re PR c++/49808 (GCC adds an address-of somewhere!)Jason Merrill4-21/+56
PR c++/49808 * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference. (convert_nontype_argument, tsubst_template_arg): Handle its output. From-SVN: r176916
2011-07-28Add a testcase for PR rtl-optimization/47958.H.J. Lu2-0/+18
2011-07-28 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/47958 * gcc.dg/torture/pr47958-1.c: New. From-SVN: r176914
2011-07-28Add x32 support to config/i386/morestack.S.H.J. Lu2-8/+20
2011-07-28 H.J. Lu <hongjiu.lu@intel.com> * config/i386/morestack.S (X86_64_SAVE_NEW_STACK_BOUNDARY): New. Use X86_64_SAVE_NEW_STACK_BOUNDARY to save the new stack boundary for x86-64. Properly check __x86_64__ and __LP64__. From-SVN: r176912
2011-07-29re PR rtl-optimization/49799 (gcc arm generates illegal sbfx instruction)Wei Guozhi4-0/+37
PR rtl-optimization/49799 * combine.c (make_compound_operation): Check if the bit field is valid before change it to bit field extraction. * gcc.dg/pr49799.c: New test case. From-SVN: r176911
2011-07-29Daily bump.GCC Administrator1-1/+1
From-SVN: r176910
2011-07-28re PR rtl-optimization/49891 (ICE in redirect_jump_1)Bernd Schmidt2-0/+7
PR rtl-optimization/49891 * cfgrtl.c (force_nonfallthru_and_redirect): Set JUMP_LABEL for newly created returnjumps. From-SVN: r176905
2011-07-28expr.c (expand_expr_addr_expr_1): Detect a user request for a local frame in ↵DJ Delorie2-1/+14
a naked function... * expr.c (expand_expr_addr_expr_1): Detect a user request for a local frame in a naked function, and produce a suitable error for that specific case. From-SVN: r176904
2011-07-28m32c.c (m32c_secondary_reload_class): Allow PSI registers to be reloaded in ↵DJ Delorie2-1/+6
HI classes when the target is HI. * config/m32c/m32c.c (m32c_secondary_reload_class): Allow PSI registers to be reloaded in HI classes when the target is HI. From-SVN: r176903
2011-07-28Replace v1, v2, lb, ub with bound_one, bound_twoSebastian Pop2-99/+116
2011-07-28 Sebastian Pop <sebastian.pop@amd.com> * graphite-clast-to-gimple.c: Replace v1, v2, lb, ub with bound_one, bound_two. From-SVN: r176902
2011-07-28Fix PR48648: Handle CLAST assignments.Sebastian Pop4-0/+79
The CLAST produced by CLooG-ISL contains an assignment and GCC chokes on it. The exact CLAST contains an assignment followed by an if: scat_1 = max(0,ceild(T_4-7,8)); if (scat_1 <= min(1,floord(T_4-1,8))) { S7(scat_1); } This is equivalent to a loop that iterates only once, and so CLooG generates an assignment followed by an if instead of a loop. This is an important optimization that was improved in ISL, that allows if-conversion: imagine GCC having to figure out that a loop like the following actually iterates only once, and can be converted to an if: for (scat_1 = max(0,ceild(T_4-7,8)); scat_1 <= min(1,floord(T_4-1,8)); scat_1++) S7(scat_1); This patch implements the translation of CLAST assignments. Bootstrapped and tested on amd64-linux. 2011-07-28 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/48648 * graphite-clast-to-gimple.c (clast_get_body_of_loop): Handle CLAST assignments. (translate_clast): Same. (translate_clast_assignment): New. * gcc.dg/graphite/id-pr48648.c: New. From-SVN: r176901
2011-07-28Fix PR49876: Continue code generation with integer_zero_node on gloog_errorSebastian Pop2-10/+15
When setting gloog_error, graphite should continue code generation without early returns, as otherwise the SSA representation would not be complete. So set the new expression to integer_zero_node, that would not require more SSA updates, and continue code generation as nothing happened. Regstrapped on amd64-linux. 2011-07-28 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/49876 * sese.c (rename_uses): Do not return false on gloog_error: set the new_expr to integer_zero_node and continue code generation. (graphite_copy_stmts_from_block): Remove early exit on gloog_error. From-SVN: r176900
2011-07-28re PR c++/49813 ([C++0x] sinh vs asinh vs constexpr)Paolo Carlini2-0/+12
2011-07-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/49813 * semantics.c (potential_constant_expression_1): Handle FMA_EXPR. Checking this in for Paolo. From-SVN: r176899
2011-07-28line-map.h (struct line_maps): Remove unused field last_listed.Gabriel Charette3-6/+5
* include/line-map.h (struct line_maps): Remove unused field last_listed. Update all users. From-SVN: r176898
2011-07-28re PR fortran/31067 (MINLOC should sometimes be inlined (gas_dyn is sooooo ↵Jakub Jelinek9-1/+741
sloooow)) PR fortran/31067 * frontend-passes.c (optimize_minmaxloc): New function. (optimize_expr): Call it. * gfortran.dg/maxloc_2.f90: New test. * gfortran.dg/maxloc_3.f90: New test. * gfortran.dg/minloc_1.f90: New test. * gfortran.dg/minloc_2.f90: New test. * gfortran.dg/minloc_3.f90: New test. * gfortran.dg/minmaxloc_7.f90: New test. From-SVN: r176897
2011-07-28Use long long for 64bit int.H.J. Lu2-9/+10
2010-07-28 H.J. Lu <hongjiu.lu@intel.com> * config/i386/64/sfp-machine.h (_FP_W_TYPE): Always use _WIN64 version. (_FP_WS_TYPE): Likewise. (_FP_I_TYPE): Likewise. From-SVN: r176894
2011-07-28Check ia32 instead of ilp32 for ia32 tests.H.J. Lu4-3/+11
2011-07-28 H.J. Lu <hongjiu.lu@intel.com> * testsuite/lib/libgomp.exp (libgomp_init): Add -march=i486 for ia32 instead of ilp32. * testsuite/libgomp.c/atomic-1.c: Require ia32 instead of ilp32. * testsuite/libgomp.c/atomic-6.c: Likewise. From-SVN: r176893
2011-07-28re PR debug/49846 (entryval: missing DW_TAG_GNU_call_site_parameter for ↵Jakub Jelinek2-0/+23
stack-passed `double' parameter) PR debug/49846 * var-tracking.c (prepare_call_arguments): For non-MODE_INT stack arguments also check if they aren't initialized with a MODE_INT mode of the same size. From-SVN: r176892
2011-07-28expr.c (get_bit_range): Handle *MEM_REF's.Aldy Hernandez2-1/+8
* expr.c (get_bit_range): Handle *MEM_REF's. From-SVN: r176891
2011-07-28rtlanal.c (tablejump_p): False for returns.Bernd Schmidt17-165/+227
* rtlanal.c (tablejump_p): False for returns. * reorg.c (first_active_target_insn): New static function. (find_end_label): Set JUMP_LABEL for a new returnjump. (optimize_skip, get_jump_flags, rare_destination, mostly_true_jump, get_branch_condition, steal_delay_list_from_target, own_thread_p, fill_simple_delay_slots, follow_jumps, fill_slots_from_thread, fill_eager_delay_slots, relax_delay_slots, make_return_insns, dbr_schedule): Adjust to handle ret_rtx in JUMP_LABELs. * jump.c (delete_related_insns): Likewise. (jump_to_label_p): New function. (redirect_target): New static function. (redirect_exp_1): Use it. Adjust to handle ret_rtx in JUMP_LABELS. (redirect_jump_1): Assert that the new label is nonnull. (redirect_jump): Likewise. (redirect_jump_2): Check for ANY_RETURN_P rather than NULL labels. * ifcvt.c (find_if_case_1): Take care when redirecting jumps to the exit block. (dead_or_predicable): Change NEW_DEST arg to DEST_EDGE. All callers changed. Ensure that the right label is passed to redirect_jump. * function.c (emit_return_into_block, thread_prologue_and_epilogue_insns): Ensure new returnjumps have ret_rtx in their JUMP_LABEL. * print-rtl.c (print_rtx): Handle ret_rtx in a JUMP_LABEL. * emit-rtl.c (skip_consecutive_labels): Allow the caller to pass ret_rtx as label. * cfglayout.c (fixup_reorder_chain): Use force_nonfallthru_and_redirect rather than force_nonfallthru. (duplicate_insn_chain): Copy JUMP_LABELs for returns. * rtl.h (ANY_RETURN_P): New macro. (jump_to_label_p): Declare. * resource.c (find_dead_or_set_registers): Handle ret_rtx in JUMP_LABELs. (mark_target_live_regs): Likewise. * basic-block.h (force_nonfallthru_and_redirect): Declare. * cfgrtl.c (force_nonfallthru_and_redirect): No longer static. * config/alpha/alpha.c (alpha_tablejump_addr_vec, alpha_tablejump_best_label): Remove functions. * config/alpha/alpha-protos.c (alpha_tablejump_addr_vec, alpha_tablejump_best_label): Remove declarations. * config/sh/sh.c (barrier_align, split_branches): Adjust for ret_rtx in JUMP_LABELs. * config/arm/arm.c (is_jump_table): Likewise. From-SVN: r176881
2011-07-28predicates.md (pic_32bit_opreand): Do not define as special predicate.Uros Bizjak2-11/+13
* config/i386/predicates.md (pic_32bit_opreand): Do not define as special predicate. Remove explicit mode checks. From-SVN: r176879
2011-07-28dwarf2out.c (resolve_addr): For -gdwarf-2 don't optimize ↵Jakub Jelinek2-7/+24
DW_AT_data_member_location containing just... * dwarf2out.c (resolve_addr): For -gdwarf-2 don't optimize DW_AT_data_member_location containing just DW_OP_plus_uconst. From-SVN: r176878
2011-07-28re PR debug/49871 (-gdwarf-3 creates invalid DWARF3 with ↵Jakub Jelinek4-3/+50
DW_AT_data_member_location attribute) PR debug/49871 * dwarf2out.c (size_of_die, value_format, output_die): Use DW_FORM_udata instead of DW_FORM_data[48] for dw_val_class_unsigned_const DW_AT_data_member_location for DWARF 3. * gcc.dg/debug/dwarf2/pr49871.c: New test. From-SVN: r176876
2011-07-28* ChangeLog: Remove mess.Uros Bizjak1-37/+2
From-SVN: r176874
2011-07-28Update length attribute on *tls_global_dynamic_64.H.J. Lu2-1/+7
2011-07-28 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.md (*tls_global_dynamic_64): Update length attribute. From-SVN: r176873
2011-07-28re PR target/47715 ([x32] TLS doesn't work)Uros Bizjak2-15/+26
PR target/47715 * config/i386/i386.md (*tls_global_dynamic_64): Remove mode from tls_symbolic_operand check. Update code sequence for TARGET_X32. (tls_global_dynamic_64): Remove mode from tls_symbolic_operand check. (tls_dynamic_gnu2_64): Ditto. (*tls_dynamic_gnu2_lea_64): Ditto. (*tls_dynamic_gnu2_call_64): Ditto. (*tls_dynamic_gnu2_combine_64): Ditto. From-SVN: r176872
2011-07-28Set need_64bit_hwint to yes for x86 targets.H.J. Lu5-24/+12
gcc/ 2011-07-28 H.J. Lu <hongjiu.lu@intel.com> * config.gcc: Set need_64bit_hwint to yes for x86 targets. libcpp/ 2011-07-28 H.J. Lu <hongjiu.lu@intel.com> * configure.ac: Set need_64bit_hwint to yes for x86 targets. * configure: Regenerated. From-SVN: r176871
2011-07-28init.c (__gnat_error_handler): Cast reason to int.Rainer Orth2-2/+15
* init.c (__gnat_error_handler): Cast reason to int. (__gnat_install_handler): Explain sa_sigaction use. From-SVN: r176870
2011-07-28Only expand strlen to Pmode.H.J. Lu2-5/+10
2011-07-28 H.J. Lu <hongjiu.lu@intel.com> PR target/47364 * config/i386/i386.md (strlen<mode>): Replace SWI48x with P. From-SVN: r176868
2011-07-28vfp.md ("*movdf_vfp"): Handle the VFP constraints before the core constraints.Ramana Radhakrishnan2-14/+20
2011-07-28 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> * config/arm/vfp.md ("*movdf_vfp"): Handle the VFP constraints before the core constraints. Adjust attributes. (*thumb2_movdf_vfp"): Likewise. From-SVN: r176867
2011-07-28tree-vrp.c (simplify_stmt_using_ranges): Remove TRUTH_NOT_EXPR case.Kai Tietz2-50/+42
2011-07-28 Kai Tietz <ktietz@redhat.com> * tree-vrp.c (simplify_stmt_using_ranges): Remove TRUTH_NOT_EXPR case. (simplify_truth_ops_using_ranges): Likewise. (build_assert_expr_for): Likewise. (build_assert_expr_for_1): Remove TRUTH_NOT_EXPR case and handle BIT_NOT_EXPR for truth-operation. From-SVN: r176866
2011-07-28re PR target/49313 (Inefficient libgcc implementations for avr)Georg-Johann Lay3-298/+25
PR target/49313 Undo r176835 from trunk 2011-07-27 Georg-Johann Lay From-SVN: r176865
2011-07-28update copyrightAlan Modra1-1/+2
From-SVN: r176863
2011-07-28re PR target/49687 ([avr] Missed optimization for widening MUL)Georg-Johann Lay6-242/+637
PR target/49687 * config/avr/t-avr (LIB1ASMFUNCS): Remove _xmulhisi3_exit. Add _muluhisi3, _mulshisi3, _usmulhisi3. * config/avr/libgcc.S (__mulsi3): Rewrite. (__mulhisi3): Rewrite. (__umulhisi3): Rewrite. (__usmulhisi3): New. (__muluhisi3): New. (__mulshisi3): New. (__mulohisi3): New. (__mulqi3, __mulqihi3, __umulqihi3, __mulhi3): Use DEFUN/ENDF to declare. * config/avr/predicates.md (pseudo_register_operand): Rewrite. (pseudo_register_or_const_int_operand): New. (combine_pseudo_register_operand): New. (u16_operand): New. (s16_operand): New. (o16_operand): New. * config/avr/avr.c (avr_rtx_costs): Handle costs for mult:SI. * config/avr/avr.md (QIHI, QIHI2): New mode iterators. (any_extend, any_extend2): New code iterators. (extend_prefix): New code attribute. (mulsi3): Rewrite. Turn insn to expander. (mulhisi3): Ditto. (umulhisi3): Ditto. (usmulhisi3): New expander. (*mulsi3): New insn-and-split. (mulu<mode>si3): New insn-and-split. (muls<mode>si3): New insn-and-split. (mulohisi3): New insn-and-split. (*uumulqihisi3, *uumulhiqisi3, *uumulhihisi3, *uumulqiqisi3, *usmulqihisi3, *usmulhiqisi3, *usmulhihisi3, *usmulqiqisi3, *sumulqihisi3, *sumulhiqisi3, *sumulhihisi3, *sumulqiqisi3, *ssmulqihisi3, *ssmulhiqisi3, *ssmulhihisi3, *ssmulqiqisi3): New insn-and-split. (*mulsi3_call): Rewrite. (*mulhisi3_call): Rewrite. (*umulhisi3_call): Rewrite. (*usmulhisi3_call): New insn. (*muluhisi3_call): New insn. (*mulshisi3_call): New insn. (*mulohisi3_call): New insn. (extendqihi2): Use combine_pseudo_register_operand as predicate for operand 1. (extendqisi2): Ditto. (zero_extendqihi2): Ditto. (zero_extendqisi2): Ditto. (zero_extendhisi2): Ditto. (extendhisi2): Ditto. Don't early-clobber operand 0. From-SVN: r176862
2011-07-28linux-unwind.h (frob_update_context <__powerpc64__>): Leave r2 REG_UNSAVED ↵Alan Modra2-4/+28
if stopped on the instruction that saves r2 in a plt call stub. * config/rs6000/linux-unwind.h (frob_update_context <__powerpc64__>): Leave r2 REG_UNSAVED if stopped on the instruction that saves r2 in a plt call stub. Do restore r2 if stopped on bctrl. From-SVN: r176861
2011-07-28i386.c (add->lea splitter): Add SWI mode to PLUS RTX.Uros Bizjak2-2/+6
* config/i386/i386.c (add->lea splitter): Add SWI mode to PLUS RTX. From-SVN: r176860
2011-07-28i386.exp (check_effective_target_bmi): Make sure the builtin isn't optimized ↵Jakub Jelinek2-2/+7
away. * gcc.target/i386/i386.exp (check_effective_target_bmi): Make sure the builtin isn't optimized away. From-SVN: r176859
2011-07-28Daily bump.GCC Administrator1-1/+1
From-SVN: r176856
2011-07-28re PR fortran/45586 (ICE non-trivial conversion at assignment)Tobias Burnus4-0/+48
2011-07-27 Tobias Burnus <burnus@net-b.de> PR fortran/45586 * trans-types.c (gfc_get_derived_type): Ensure that pointer component types are marked as nonrestricted. 2011-07-27 Tobias Burnus <burnus@net-b.de> PR fortran/45586 * gfortran.dg/lto/pr45586-2_0.f90: New. From-SVN: r176852
2011-07-27re PR middle-end/49875 (FAIL: c-c++-common/cxxbitfields-4.c)Aldy Hernandez3-2/+9
PR middle-end/49875 * c-c++-common/cxxbitfields-4.c: Check for smaller than long moves. * c-c++-common/cxxbitfields-5.c: Same. From-SVN: r176848
2011-07-27re PR c++/49813 ([C++0x] sinh vs asinh vs constexpr)Paolo Carlini2-271/+297
2011-07-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/49813 * include/c_global/cmath: Use _GLIBCXX_CONSTEXPR and constexpr. From-SVN: r176847
2011-07-27target-supports.exp (check_effective_target_mmap): Use check_function_available.Ulrich Weigand2-3/+6
* lib/target-supports.exp (check_effective_target_mmap): Use check_function_available. From-SVN: r176846
2011-07-27Propagate the source location of a template's function_decl to the ↵Jeffrey Yasskin6-10/+24
template_decl built out of it. Propagate the source location of a template's function_decl to the template_decl built out of it. Without this, specializations generated before the template was defined get the location of the closing ')' instead of the location of the template's name, which can produce inconsistent locations between translation units, which makes gold's ODR checker unhappy. * gcc/cp/pt.c (build_template_decl): Copy the function_decl's source location to the new template_decl. * gcc/testsuite/g++.old-deja/g++.pt/crash60.C: Updated. * libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Updated. From-SVN: r176845
2011-07-27re PR target/49866 (-mcmodel=large tail call fails to assemble)Jakub Jelinek2-0/+28
PR target/49866 * gcc.target/i386/pr49866.c: New test. From-SVN: r176842