1. 07 Sep, 2012 11 commits
    • re PR tree-optimization/54295 (Widening multiply-accumulate operation uses wrong value extension) · e919e5bf
      	PR tree-ssa/54295
      	* tree-ssa-math-opts.c (widening_mult_conversion_strippable_p):
      	Sign-extension of a zero-extended value can be simplified to
      	just zero-extension.
      
      testsuite:
      	* gcc.target/arm/pr50318-1.c: Scan for smlal.
      	* gcc.target/arm/smlaltb-1.c: XFAIL test.
      	* gcc.target/arm/smlaltt-1.c: Likewise.
      
      From-SVN: r191066
      Richard Earnshaw committed
    • re PR middle-end/53667 (Cray pointer: Wrong result with optimizations) · 81ab7312
      2012-09-07  Richard Guenther  <rguenther@suse.de>
      
      	PR middle-end/53667
      	* tree-ssa-structalias.c (handle_rhs_call): Properly clobber
      	EAF_NOESCAPED arguments.  Transitively close non-EAF_DIRECT
      	arguments separately.
      
      From-SVN: r191064
      Richard Guenther committed
    • bitmap.c (bitmap_last_set_bit): Rewrite to return the correct bit. · d630245f
      	* bitmap.c (bitmap_last_set_bit): Rewrite to return the correct bit.
      
      	* graphite.c (print_global_statistics): Use EDGE_COUNT instead
      	of VEC_length.
      	(print_graphite_scop_statistics): Likewise.
      	* graphite-scop-detection.c (get_bb_type): Use single_succ_p.
      	(print_graphite_scop_statistics): Use EDGE_COUNT, not VEC_length.
      	(canonicalize_loop_closed_ssa): Use single_pred_p.
      
      	* alias.c (reg_seen): Make this an sbitmap.
      	(record_set, init_alias_analysis): Update.
      
      	* tree-ssa-coalesce.c (ssa_conflicts_dump): Fix dumping.
      
      From-SVN: r191063
      Steven Bosscher committed
    • re PR tree-optimization/53986 (missing vrp on bit-mask test, LSHIFT_EXPR not handled) · 4d9df7c4
      2012-09-07  Tom de Vries  <tom@codesourcery.com>
      
      	PR tree-optimization/53986
      	* gcc.dg/tree-ssa/vrp80.c: New test.
      	* gcc.dg/tree-ssa/vrp80-2.c: Same.
      
      From-SVN: r191058
      Tom de Vries committed
    • re PR tree-optimization/53986 (missing vrp on bit-mask test, LSHIFT_EXPR not handled) · 25722436
      2012-09-07  Tom de Vries  <tom@codesourcery.com>
      
      	PR tree-optimization/53986
      	* tree-vrp.c (extract_range_from_multiplicative_op_1): Allow
      	LSHIFT_EXPR.
      	(extract_range_from_binary_expr_1): Handle LSHIFT with constant range as
      	shift amount.
      
      From-SVN: r191057
      Tom de Vries committed
    • aix43.h (RS6000_CALL_GLUE): Delete. · 7fb3b7a7
      2012-09-07  Segher Boessenkool  <segher@kernel.crashing.org>
      
      gcc/
      	* config/rs6000/aix43.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/aix51.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/aix52.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/aix53.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/aix61.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/freebsd64.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/linux64.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/rs6000.c (print_operand) ['.']: Delete.
      	* config/rs6000/rs6000.h (RS6000_CALL_GLUE): Delete.
      	* config/rs6000/rs6000.md (tls_gd_aix<TLSmode:tls_abi_suffix>):
      	Replace %. with nop.
      	(tls_gd_call_aix<TLSmode:tls_abi_suffix>): Ditto.
      	(tls_ld_aix<TLSmode:tls_abi_suffix>): Ditto.
      	(tls_ld_call_aix<TLSmode:tls_abi_suffix>): Ditto.
      	(call_nonlocal_aix32): Ditto.
      	(call_nonlocal_aix64): Ditto.
      	(call_value_nonlocal_aix32): Ditto.
      	(call_value_nonlocal_aix64): Ditto.
      
      From-SVN: r191055
      Segher Boessenkool committed
    • invoke.texi (-ffat-lto-objects): Clarify that gcc-ar et.al. · 35d5c697
      2012-06-04  Andi Kleen <ak@linux.intel.com>
      
      	* doc/invoke.texi (-ffat-lto-objects): Clarify that gcc-ar
      	et.al. should be used.
      
      From-SVN: r191052
      Andi Kleen committed
    • Reduce memory usage for storing LTO decl resolutions · aed7d7cf
      With a LTO build of a large project (>11k subfiles incrementially linked)
      storing the LTO resolutions took over 0.5GB memory:
      
      lto/lto.c:1087 (lto_resolution_read)                      0: 0.0%  540398500           15903: 0.0%
      
      The reason is that the declaration indexes are quite sparse, but every subfile
      got a full continuous vector for them. Since there are so many of them the
      many vectors add up.
      
      This patch instead stores the resolutions initially in a compact (index, resolution)
      format. This is only expanded into a sparse vector for fast lookup when
      the subfile is actually read, but then immediately freed. This means only one
      vector is allocated at a time.
      
      This brings the overhead for this down to less than 3MB for the test case:
      
      lto/lto.c:1087 (lto_resolution_read)                      0: 0.0%    2821456           42186: 0.0%
      
      gcc/:
      
      2012-09-06  Andi Kleen  <ak@linux.intel.com>
      
      	* gcc/lto-streamer.h (res_pair): Add.
      	(lto_file_decl_data): Replace resolutions with respairs.
      	Add max_index.
      	* gcc/lto/lto.c (lto_resolution_read): Remove max_index.  Add rp.
      	Initialize respairs.
      	(lto_file_finalize): Set up resolutions vector lazily from respairs.
      
      From-SVN: r191051
      Andi Kleen committed
    • Daily bump. · 6e85a158
      From-SVN: r191050
      GCC Administrator committed
    • Modify gcc/*.[hc] double_int call sites to use the new interface. · 27bcd47c
      This change entailed adding a few new methods to double_int.
      
      The change results in a 0.163% time improvement with a 70% confidence.
      
      Tested on x86_64.
      
      
      Index: gcc/ChangeLog
      
      2012-09-06  Lawrence Crowl  <crowl@google.com>
      
      	* double-int.h (double_int::operator &=): New.
      	(double_int::operator ^=): New.
      	(double_int::operator |=): New.
      	(double_int::mul_with_sign): Modify overflow parameter to bool*.
      	(double_int::add_with_sign): New.
      	(double_int::ule): New.
      	(double_int::sle): New.
      	(binary double_int::operator *): Remove parameter name.
      	(binary double_int::operator +): Likewise.
      	(binary double_int::operator -): Likewise.
      	(binary double_int::operator &): Likewise.
      	(double_int::operator |): Likewise.
      	(double_int::operator ^): Likewise.
      	(double_int::and_not): Likewise.
      	(double_int::from_shwi): Tidy formatting.
      	(double_int::from_uhwi): Likewise.
      	(double_int::from_uhwi): Likewise.
      	* double-int.c (double_int::mul_with_sign): Modify overflow parameter
      	to bool*.
      	(double_int::add_with_sign): New.
      	(double_int::ule): New.
      	(double_int::sle): New.
      	* builtins.c: Modify to use the new double_int interface.
      	* cgraph.c: Likewise.
      	* combine.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* fixed-value.c: Likewise.
      	* fold-const.c: Likewise.
      	* gimple-fold.c: Likewise.
      	* gimple-ssa-strength-reduction.c: Likewise.
      	* gimplify-rtx.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* loop-iv.c: Likewise.
      	* optabs.c: Likewise.
      	* stor-layout.c: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-sccvn: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vrp.c: Likewise.
      	* tree.h: Likewise.
      	* tree.c: Likewise.
      	* varasm.c: Likewise.
      
      From-SVN: r191047
      Lawrence Crowl committed
  2. 06 Sep, 2012 16 commits
  3. 05 Sep, 2012 13 commits
    • ipa-inline.c (want_inline_small_function_p): Use INLINE_HINT_loop_iterations hint. · 7c99ab65
      
      	* ipa-inline.c (want_inline_small_function_p): Use INLINE_HINT_loop_iterations
      	hint.
      
      From-SVN: r190999
      Jan Hubicka committed
    • fpu-387.h (set_fpu): Prefix stmxcsr and ldmxcsr with %v. · 588dbb19
      	* config/fpu-387.h (set_fpu): Prefix stmxcsr and ldmxcsr with %v.
      
      From-SVN: r190997
      Uros Bizjak committed
    • optabs.c (emit_conditional_add): Correct comment about the arguments. · 5285c21c
      2012-09-05  Andrew Pinski  <apinski@cavium.com>
      
       	* optabs.c (emit_conditional_add): Correct comment about the arguments.
      	Remove code which might swap op2 and op3 since they cannot be swapped.
      	* doc/md.texi (add@var{mode}cc): Fix document about how the arguments
      	are used.
      
      From-SVN: r190994
      Andrew Pinski committed
    • * ChangeLog: Fix date of my last commit. · 933d309f
      From-SVN: r190993
      Uros Bizjak committed
    • fpu-387.h (set_fpu): Use __builtin_ia32_stmxcsr and __builtin_ia32_ldmxcsr intrinsics. · df36cec0
      	* config/fpu-387.h (set_fpu): Use __builtin_ia32_stmxcsr and
      	__builtin_ia32_ldmxcsr intrinsics.
      
      From-SVN: r190992
      Uros Bizjak committed
    • re PR libstdc++/54296 (using the object in the map to erase element from the map crashes) · 31578792
      2012-09-05  François Dumont  <fdumont@gcc.gnu.org>
      
      	PR libstdc++/54296
      	* include/bits/hashtable.h (_M_erase(size_type, __node_base*,
      	__node_type*)): New.
      	(erase(const_iterator)): Use latter.
      	(_M_erase(std::true_type, const key_type&)): New, likewise.
      	(_M_erase(std::false_type, const key_type&)): New. Find all nodes
      	matching the key before deallocating them so that the key doesn't
      	get invalidated.
      	(erase(const key_type&)): Use the new member functions.
      	* testsuite/23_containers/unordered_map/erase/54296.cc: New.
      	* testsuite/23_containers/unordered_multimap/erase/54296.cc: New.
      
      From-SVN: r190991
      François Dumont committed
    • hooks.c (hook_int_rtx_mode_as_bool_0): New function. · b413068c
      	* hooks.c (hook_int_rtx_mode_as_bool_0): New function.
      	* hooks.h (hook_int_rtx_mode_as_bool_0): Declare it.
      	* output.h (default_address_cost): Add machine_mode and address space
      	arguments.
      	* target.def (address_cost): Likewise.
      	* rtlanal.c (address_cost): Pass mode and address space to target hook.
      	(default_address_cost): Add unnamed machine_mode and address space
      	arguments.
      	* doc/tm.texi: Regenerate.
      	* config/alpha/alpha.c (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      	* config/arm/arm.c (arm_address_cost): Add machine_mode and address
      	space arguments.
      	* config/avr/avr.c (avr_address_cost): Likewise.
      	* config/bfin/bfin.c (bfin_address_cost): Likewise.
      	* config/cr16/cr16.c (cr16_address_cost): Likewise.
      	* config/cris/cris.c (cris_address_cost): Likewise.
      	* config/epiphany/epiphany.c (epiphany_address_cost): Likewise.
      	* config/i386/i386.c (ix86_address_cost): Likewise.
      	* config/ia64/ia64.c (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      	* config/iq2000/iq2000.c (iq2000_address_cost): Add machine_mode and
      	address space arguments.  Pass them on in recursive invocation.
      	* config/lm32/lm32.c (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      	* config/m32c/m32c.c (m32c_address_cost): Add machine_mode and address
      	space arguments.
      	* config/m32r/m32r.c (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      	* config/mcore/mcore.c (TARGET_ADDRESS_COST): Likewise.
      	* config/mep/mep.c (mep_address_cost): Add machine_mode and address
      	space arguments.
      	* config/microblaze/microblaze.c (microblaze_address_cost): Likewise.
      	* config/mips/mips.c (mips_address_cost): Likewise.
      	* config/mmix/mmix.c (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      	* config/mn10300/mn10300.c (mn10300_address_cost): Add machine_mode and
      	address space arguments.
      	(mn10300_rtx_costs): Pass GET_MODE (x) and MEM_ADDR_SPACE (x) to
      	mn10300_address_cost.
      	* config/pa/pa.c (hppa_address_cost): Add machine_mode and address
      	space arguments.
      	* config/rs6000/rs6000.c (rs6000_debug_address_cost): Likewise.
      	(TARGET_ADDRESS_COST): Use hook_int_rtx_mode_as_bool_0 instead of
      	hook_int_rtx_bool_0.
      	* config/rx/rx.c (rx_address_cost): Add machine_mode and address
      	space arguments.
      	* config/s390/s390.c (s390_address_cost): Likewise.
      	* config/score/score-protos.h (score_address_cost): Likewise.
      	* config/score/score.c (score_address_cost): Likewise.
      	* config/sh/sh.c (sh_address_cost): Likewise.
      	* config/sparc/sparc.c (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      	* config/spu/spu.c (TARGET_ADDRESS_COST): Likewise.
      	* config/stormy16/stormy16.c (xstormy16_address_cost): Add machine_mode
      	and address space arguments.
      	* config/v850/v850.c (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      	* config/vax/vax.c (vax_address_cost): Add machine_mode and address
      	space arguments.
      	* config/xtensa/xtensa (TARGET_ADDRESS_COST): Use
      	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
      
      From-SVN: r190990
      Oleg Endo committed
    • re PR fortran/54462 (Another "segmentation fault" after an error in COMMON statement after r190853) · 04529aba
      2012-09-05  Tobias Burnus  <burnus@net-b.de>
      
              PR fortran/54462
              * symbol.c (gfc_undo_symbols): Avoid NULL pointer dereference.
      
      From-SVN: r190989
      Tobias Burnus committed
    • re PR bootstrap/54484 (r190927 breaks bootstrap with clang compiler) · 7e7d75c1
      	PR bootstrap/54484
      	* vec.h (vec_t::lower_bound): Fix spelling of LESSTHAN
      	argument.
      
      From-SVN: r190988
      Diego Novillo committed
    • re PR middle-end/54486 (Spurious printf format warning mentions nonexistent type 'sizetype') · 854f9272
      	PR middle-end/54486
      	* builtins.c (fold_builtin_strspn, fold_builtin_strcspn): Use
      	build_int_cst with size_type_node instead of size_int.
      
      	* c-c++-common/pr54486.c: New test.
      
      From-SVN: r190986
      Jakub Jelinek committed
    • sse.md (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Use register_operand… · 305b3c9b
      sse.md (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Use register_operand instead of reg_not_xmm0_operand{,_maybe_avx}.
      
      	* config/i386/sse.md (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>):
      	Use register_operand instead of reg_not_xmm0_operand{,_maybe_avx}.
      	Use nonimmediate_operand instead of
      	nonimm_not_xmm0_operand{,_maybe_avx}.
      	(<sse4_1_avx2>_pblendvb): Ditto.
      	(sse4_2_pcmpestr): Ditto.
      	(*sse4_2_pcmpestr_unaligned): Ditto.
      	(sse4_2_pcmpistr): Ditto.
      	(*sse4_2_pcmpistr_unaligned): Ditto.
      	* config/i386/predicates.md (reg_not_xmm0_operand): Remove predicate.
      	(nonimm_not_xmm0_operand): Ditto.
      	(nonimm_not_xmm0_operand_maybe_avx): Ditto.
      	(nonimm_not_xmm0_operand_maybe_avx): Ditto.
      	* config/i386/i386.md (rdpmc): Do not force operand 1 into ecx.
      
      From-SVN: r190985
      Uros Bizjak committed
    • random.cc (random_device::_M_init): Check whether cpuid instruction is available… · efc622f8
      random.cc (random_device::_M_init): Check whether cpuid instruction is available by using __get_cpuid_max.
      
      
      	* src/c++11/random.cc (random_device::_M_init): Check whether cpuid
      	instruction is available by using __get_cpuid_max.
      
      From-SVN: r190982
      Ulrich Drepper committed
    • bb-reorder.c: Clarify a few points in the head comment and fix long lines in other comments. · 4700dd70
      	* bb-reorder.c: Clarify a few points in the head comment and fix
      	long lines in other comments.
      	(find_traces): Fix long line.
      	(find_traces_1_round): Likewise.
      	(better_edge_p): Likewise.
      	(connect_traces): Likewise.
      	(duplicate_computed_gotos): Likewise.
      	(find_rarely_executed_basic_blocks_and_cr): Remove trailing spaces.
      	(fix_up_fall_thru_edges): Fix formatting.
      
      From-SVN: r190979
      Eric Botcazou committed