1. 11 Nov, 2011 18 commits
    • re PR tree-optimization/51058 (ICE: gimple check: expected… · dd34c087
      re PR tree-optimization/51058 (ICE: gimple check: expected gimple_assign(error_mark), have gimple_call() in gimple_assign_rhs_code, at gimple.h:1992)
      
      	PR tree-optimization/51058
      	* tree-vect-slp.c (vect_remove_slp_scalar_calls): New function.
      	(vect_schedule_slp): Call it.
      	* tree-vect-stmts.c (vectorizable_call): If slp_node != NULL,
      	don't replace scalar calls with setting of their lhs to zero here.
      
      	* gcc.dg/vect/fast-math-vect-call-1.c: Add f4 test.
      	* gfortran.dg/vect/pr51058-2.f90: New test.
      
      From-SVN: r181298
      Jakub Jelinek committed
    • re PR tree-optimization/51074 (No constant folding performed for VEC_PERM_EXPR,… · 22d8712a
      re PR tree-optimization/51074 (No constant folding performed for VEC_PERM_EXPR, VEC_INTERLEAVE*EXPR, VEC_EXTRACT*EXPR)
      
      	PR tree-optimization/51074
      	* fold-const.c (vec_cst_ctor_to_array, fold_vec_perm): New functions.
      	(fold_binary_loc): Handle VEC_EXTRACT_EVEN_EXPR,
      	VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR and
      	VEC_INTERLEAVE_LOW_EXPR with VECTOR_CST or CONSTRUCTOR operands.
      	(fold_ternary_loc): Handle VEC_PERM_EXPR with VECTOR_CST or
      	CONSTRUCTOR operands.
      	* tree-ssa-propagate.c (valid_gimple_rhs_p): Handle ternary
      	expressions.
      	* tree-vect-generic.c (lower_vec_perm): Mask sel_int elements
      	to 0 .. 2 * elements - 1.
      
      From-SVN: r181297
      Jakub Jelinek committed
    • Implement omp atomic load and store. · 05409788
      	* gimple-pretty-print.c (dump_gimple_omp_atomic_load): Dump needed.
      	(dump_gimple_omp_atomic_store): Likewise.
      	* optabs.c (can_atomic_exchange_p): New.
      	* optabs.h (can_atomic_exchange_p): Declare.
      	* omp-low.c (expand_omp_atomic_load): Implement.
      	(expand_omp_atomic_store): Likewise.
      	(expand_omp_atomic): Update for new arguments to load/store.
      
      From-SVN: r181296
      Richard Henderson committed
    • re PR c++/50976 ([C++0x] literal operator with unsigned long long parameter not accepted) · f05eec4a
      	PR c++/50976
      	* typeck.c (check_literal_operator_args): Reorganize test for string
      	operators so size_t search depends on finding string first.
      
      From-SVN: r181292
      Ed Smith-Rowland committed
    • Fix SPU libgcc build · 902828f0
      	* config/spu/t-elf (LIB2ADD): Use LIB2FUNCS_EXCLUDE instead.
      
      From-SVN: r181291
      Rainer Orth committed
    • PR 51090 Fix r181288 to conform to GNU style · c492b9d0
      From-SVN: r181290
      Janne Blomqvist committed
    • cprop.c: Adjust outdated comments throughout. · ba5c3b24
      	* cprop.c: Adjust outdated comments throughout.
      	(hash_scan_set): Rename PAT parameter into SET.
      	(cprop_pavloc): Rename into...
      	(cprop_avloc): ...this.
      	(cprop_absaltered): Rename into...
      	(cprop_kill): ...this.
      	(alloc_cprop_mem): Adjust for above renaming.
      	(free_cprop_mem): Likewise.
      	(compute_cprop_data): Likewise.
      	(compute_local_properties): Rename TRANSP parameter into KILL and
      	adjust throughout.  Rework comments.
      	(try_replace_reg): Fix long line.
      	(cprop_jump): Likewise.
      	(constprop_register): Fix prototype and take INSN last.
      	(cprop_insn): Adjust calls to above function.  Fix long lines.
      	(bypass_block): Likewise.
      	(one_cprop_pass): Likewise.
      
      From-SVN: r181289
      Eric Botcazou committed
    • PR 51090 Check that getenv result != NULL before proceeding. · ee66e604
      2011-11-11  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR libfortran/51090
      	* runtime/main.c (find_addr2line): NULL check before proceeding.
      
      From-SVN: r181288
      Janne Blomqvist committed
    • elf.h (ELF_ASCII_ESCAPES): Rename from ESCAPES. · 13ced9bb
      	* config/alpha/elf.h (ELF_ASCII_ESCAPES): Rename from ESCAPES.
      	(ELF_STRING_LIMIT): Rename from STRING_LIMIT.
      
      From-SVN: r181287
      Uros Bizjak committed
    • varasm.c (default_elf_asm_output_limited_string): #ifdef ELF_ASCII_ESCAPES. · 9a993383
      	* varasm.c (default_elf_asm_output_limited_string): #ifdef
      	ELF_ASCII_ESCAPES.
      	(default_elf_asm_output_ascii): Likewise.
      
      From-SVN: r181286
      Jason Merrill committed
    • re PR target/50762 (ICE: in extract_insn, at recog.c:2137 (unrecognizable insn)) · 5da6a383
      	PR target/50762
      	* config/i386/constraints.md (j): New address constraint.
      	* config/i386/predicates.md (lea_address_operand): Redefine as
      	special predicate.
      	* config/i386/i386.md (*lea_3_zext): Use "j" constraint for operand 1.
      	(*lea_4_zext): Ditto.
      
      From-SVN: r181285
      Uros Bizjak committed
    • MAINTAINERS (Selective Scheduling): Add myself as a reviewer. · 3fec7f10
      2011-11-11  Andrey Belevantsev  <abel@ispras.ru>
      
      	* MAINTAINERS (Selective Scheduling): Add myself as a reviewer.
      
      From-SVN: r181284
      Andrey Belevantsev committed
    • Revert sparc vec_init improvements as they cause 64-bit regressions. · 2b38137d
      gcc/
      
      	Revert
      	2011-11-05  David S. Miller  <davem@davemloft.net>
      
      From-SVN: r181283
      David S. Miller committed
    • opts-common.c (generate_canonical_option): Free opt_text it it has been… · ca3e7c9f
      opts-common.c (generate_canonical_option): Free opt_text it it has been allocated here and not stored anywhere.
      
      	* opts-common.c (generate_canonical_option): Free opt_text
      	it it has been allocated here and not stored anywhere.
      
      From-SVN: r181282
      Jakub Jelinek committed
    • tree-vect-slp.c (vect_free_slp_tree): Also free SLP_TREE_CHILDREN vector. · d3cfd39e
      	* tree-vect-slp.c (vect_free_slp_tree): Also free SLP_TREE_CHILDREN
      	vector.
      	(vect_create_new_slp_node): Don't allocate node before checking stmt
      	type.
      	(vect_free_oprnd_info): Remove FREE_DEF_STMTS argument, always
      	free def_stmts vectors and additionally free oprnd_info.
      	(vect_build_slp_tree): Adjust callers.  Call it even if
      	stop_recursion.  If vect_create_new_slp_node or
      	vect_build_slp_tree fails, properly handle freeing memory.
      	If it succeeded, clear def_stmts in oprnd_info.
      
      From-SVN: r181281
      Jakub Jelinek committed
    • re PR c++/50372 ([C++0x] pointers to static functions should be valid template parameters) · 4774d267
      	PR c++/50372
      	* pt.c (convert_nontype_argument_function): Allow decls with
      	internal linkage in C++11.
      	(convert_nontype_argument): Likewise.
      
      From-SVN: r181280
      Jason Merrill committed
    • final.c, output.h (fprint_whex, [...]): New functions serving as fast… · 5e3929ed
      final.c, output.h (fprint_whex, [...]): New functions serving as fast replacements for fprintf() integer to string...
      
      	* final.c, output.h (fprint_whex, fprint_w, fprint_ul, sprint_ul):
      	New functions serving as fast replacements for fprintf() integer
      	to string conversions. They were used in the following changes.
      	* final.c (sprint_ul_rev): Internal helper for the above.
      	(output_addr_const): case CONST_INT: don't use fprintf().
      	* elfos.h (ASM_GENERATE_INTERNAL_LABEL): Don't use sprintf("%u"),
      	use sprint_ul() and stpcpy() which are much faster.
      	(TARGET_ASM_INTERNAL_LABEL): Define as default_elf_internal_label.
      	(ELF_ASCII_ESCAPES, ELF_STRING_LIMIT): Are the old ESCAPES and
      	STRING_LIMIT macros.
      	(ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII): Macros now just
      	call respective functions that provide the same
      	functionality. Those are default_elf_asm_output_limited_string()
      	and default_elf_asm_output_ascii() in varasm.c.
      	* varasm.c: Fixed some whitespace inconsistencies.
      	(default_elf_asm_output_limited_string)
      	(default_elf_asm_output_ascii): The above macros from elfos.h are
      	implemented here as these functions, avoiding superfluous calls to
      	fprintf().
      	(default_elf_internal_label): Hook for
      	targetm.asm_out.internal_label and ASM_OUTPUT_DEBUG_LABEL.
      	* i386.c: Don't call fprintf("%u") but fprint_ul() instead.
      	* defaults.h (ASM_OUTPUT_LABEL, ASM_OUTPUT_INTERNAL_LABEL):
      	Expanded the macros on multiple lines for readability.
      	(ASM_OUTPUT_LABELREF): Have two calls to fputs() instead of one to
      	asm_fprintf().
      	* dwarf2asm.c (dw2_assemble_integer, dw2_asm_output_data)
      	(dw2_asm_data_uleb128, dw2_asm_delta_uleb128)
      	(dw2_asm_delta_sleb128): Convert fprintf() calls to the new
      	faster functions.
      	* dwarf2out.c (dwarf2out_source_line): Convert fprintf() calls to
      	the new faster functions.
      
      From-SVN: r181279
      Dimitrios Apostolou committed
    • Daily bump. · c63ee1b7
      From-SVN: r181278
      GCC Administrator committed
  2. 10 Nov, 2011 22 commits
    • extend.texi: Document __atomic_test_and_set and __atomic_clear. · 1aabd05e
      
      2011-11-10  Andrew MacLeod  <amacleod@redhat.com>
      
      	* doc/extend.texi: Document __atomic_test_and_set and __atomic_clear.
      
      From-SVN: r181273
      Andrew MacLeod committed
    • re PR c++/50973 ([C++0x] internal compiler error defaulted destructor virtual inheritance) · 99c18869
      	PR c++/50973
      	* decl2.c (mark_used): Defer synthesis of virtual functions.
      	* method.c (use_thunk): Make sure the target function has
      	DECL_INTERFACE_KNOWN.
      
      From-SVN: r181272
      Jason Merrill committed
    • re PR middle-end/51038 (29_atomics/atomic_flag/clear/1.cc test_and_set/explicit.cc implicit.cc) · d660c35e
      	PR middle-end/51038
      
      	libstdc++-v3
      	* include/bits/atomic_base.h (atomic_thread_fence): Call built-in.
      	(atomic_signal_fence): Call built-in.
      	(test_and_set, clear): Call new atomic built-ins.
      
      	gcc
      	* builtins.c (expand_builtin_atomic_clear): New.  Expand atomic_clear.
      	(expand_builtin_atomic_test_and_set): New.  Expand atomic test_and_set.
      	(expand_builtin): Add cases for test_and_set and clear.
      	* sync-builtins.def (BUILT_IN_ATOMIC_TEST_AND_SET): New.
      	(BUILT_IN_ATOMIC_CLEAR): New.
      
      	testsuite
      	* gcc.dg/atomic-invalid.c: Add test for invalid __atomic_clear models.
      	* gcc.dg/atomic-flag.c: New.  Test __atomic_test_and_set and
      	__atomic_clear.
      
      From-SVN: r181271
      Andrew MacLeod committed
    • PR c++/51079, DR 495 · 49fe93f4
      	PR c++/51079, DR 495
      	* call.c (joust): Check the second conversion sequence
      	before checking templates.
      
      From-SVN: r181270
      Jason Merrill committed
    • re PR debug/50983 (incorrect DW_LNS_negate_stmt) · c68b1bc7
      	PR debug/50983
      	* dwarf2out.c (set_cur_line_info_table): Restore the last is_stmt
      	value in the current line table.
      
      From-SVN: r181269
      Jason Merrill committed
    • fe.h (Serious_Errors_Detected): New macro. · 033ba5bf
      	* fe.h (Serious_Errors_Detected): New macro.
      	* gcc-interface/gigi.h (build_atomic_load): Declare.
      	(build_atomic_store): Likewise.
      	* gcc-interface/trans.c (atomic_sync_required_p): New predicate.
      	(call_to_gnu): Add ATOMIC_SYNC parameter.  Use local variable.
      	Build an atomic load for an In or In Out parameter if needed.
      	Build an atomic store for the assignment of an Out parameter if needed.
      	Build an atomic store to the target if ATOMIC_SYNC is true.
      	(present_in_lhs_or_actual_p): New predicate.
      	(gnat_to_gnu) <N_Identifier>: Build an atomic load if needed.
      	<N_Explicit_Dereference>: Likewise.
      	<N_Indexed_Component>: Likewise.
      	<N_Selected_Component>: Likewise.
      	<N_Assignment_Statement>: Adjust call to call_to_gnu.
      	Build an atomic store to the LHS if needed.
      	<N_Function_Call>:  Adjust call to call_to_gnu.
      	* gcc-interface/utils2.c: Include toplev.h.
      	(resolve_atomic_size): New static function.
      	(build_atomic_load): New function.
      	(build_atomic_store): Likewise.
      	* gcc-interface/Make-lang.in (ada/utils2.o): Add toplev.h.
      
      From-SVN: r181267
      Eric Botcazou committed
    • configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check. · 8b01bdb0
              * configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check.
              * configure, aclocal.m4: Rebuild.
      
      From-SVN: r181266
      Richard Henderson committed
    • gcov.c (struct function_info): Make src an index, not a pointer. · 1ce1b792
      	* gcov.c (struct function_info): Make src an index, not a pointer.
      	(struct source_info): Remove index and next source fields.
      	(fn_end): New static var.
      	(sources_index): Remove.
      	(sources): Now a pointer to an array, not a list.
      	(n_sources, a_sources): New.
      	(process_file): Adjust for changes to read_graph_file. Insert
      	functions into source lists and check line numbers here.
      	(generate_results): Only allocate lines for sources with
      	contents.  Adjust for source array.
      	(release_structures): Likewise.
      	(find_source): Return source index, adjust for source array.
      	(read_graph_file): Return function list.  Don't insert into source
      	lists here.
      	(read_count_file): Take list of functions.
      	(solve_flow_graph): Reverse the arc lists here.
      	(add_line_counts): Adjust for source array.
      
      From-SVN: r181265
      Nathan Sidwell committed
    • re PR middle-end/51077 (Endless recursion with __builtin_object_size) · ea17de23
      	PR middle-end/51077
      	* tree-object-size.c (addr_object_size): Check TREE_CODE of
      	MEM_REF's operand rather than code of the MEM_REF itself.
      
      	* gcc.c-torture/compile/pr51077.c: New test.
      
      From-SVN: r181263
      Jakub Jelinek committed
    • libitm port to Tru64 UNIX · 8851b429
      	* config/alpha/sjlj.S (_ITM_beginTransaction) [!__ELF__]: Don't use
      	.hidden.
      	(.note.GNU-stack): Only use if __linux__.
      	* alloc_cpp.cc [!__osf__] (_ZnaXRKSt9nothrow_t): Dummy function.
      	* testsuite/libitm.c/notx.c: Use dg-options "-pthread".
      	* testsuite/libitm.c/reentrant.c: Likewise.
      	* testsuite/libitm.c/simple-2.c: Likewise.
      	* testsuite/libitm.c/txrelease.c: Likewise.
      	* testsuite/libitm.c++/static_ctor.C: Likewise.
      
      From-SVN: r181262
      Rainer Orth committed
    • libitm: Don't add -mavx if the assembler doesn't support avx. · d4b17902
              * config/x86/x86_avx.cc: Remove #undef __AVX__ hack.  Tidy comments.
              * Makefile.am (x86_avx.lo): Only add -mavx if ARCH_X86_AVX.
              * configure.ac (ARCH_X86_AVX): New conditional.
              * Makefile.in, configure: Rebuild.
      
      From-SVN: r181261
      Richard Henderson committed
    • Let the compiler decide whether to inline. · 992b0aa1
      2011-11-10  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	* intrinsics/cpu_time.c (__cpu_time_1): Don't force inlining.
      	* intrinsics/random.c (rnumber_4): Remove inline attribute.
      	(rnumber_8, rnumber_10, rnumber_16): Likewise.
      	* intrinsics/system_clock.c (gf_gettime_mono): Likewise.
      	* intrinsics/time_1.h (ATTRIBUTE_ALWAYS_INLINE): Remove macro.
      	(gf_cputime): Add inline attribute for MingW version.
      	* io/format.c (format_hash): Remove inline attribute.
      	* io/io.h (memset4): Inline function from transfer.c and write.c
      	moved here.
      	* io/transfer.c (min_off): Remove inline attribute.
      	(memset4): Move to io.h.
      	* io/write.c (memset4): Likewise.
      	(memcpy4): Remove inline attribute.
      	* io/write_float.def (calculate_exp): Likewise.
      
      From-SVN: r181260
      Janne Blomqvist committed
    • re PR rtl-optimization/51040 (ICE: RTL check: access of elt 1 of 'not' with last… · 154b68db
      re PR rtl-optimization/51040 (ICE: RTL check: access of elt 1 of 'not' with last elt 0 in gen_rtx_fmt_ee_stat, at ./genrtl.h:33 with __atomic_nand_fetch())
      
      	PR rtl-optimization/51040
      	* optabs.c (expand_atomic_fetch_op): Patchup code for NAND should be AND
      	followed by NOT.
      	* builtins.c (expand_builtin_atomic_fetch_op): Patchup code for NAND
      	should be AND followed by NOT.
      	* testsuite/gcc.dg/atomic-noinline[-aux].c: Test no-inline NAND and
      	patchup code.
      
      From-SVN: r181259
      Andrew MacLeod committed
    • vec.h (VEC_BASE): If base is at offset 0 in the structure, use &(P)->base even if P is NULL. · c8bf99b4
      	* vec.h (VEC_BASE): If base is at offset 0 in the structure,
      	use &(P)->base even if P is NULL.
      
      From-SVN: r181258
      Jakub Jelinek committed
    • re PR rtl-optimization/51023 (likely integer wrong code bug) · 03989f55
      	PR rtl-optimization/51023
      	* combine.c (simplify_comparison) <case SIGN_EXTEND>: Don't use
      	val_signbit_known_clear_p for signed comparison narrowing
      	optimization.  Don't check for non-VOIDmode, use
      	HWI_COMPUTABLE_MODE_P macro.
      	<case ZERO_EXTEND>: Don't check for non-VOIDmode.
      	Optimize even when const_op is equal to GET_MODE_MASK (mode),
      	don't optimize if const_op is negative.
      
      	* gcc.c-torture/execute/pr51023.c: New test.
      
      From-SVN: r181257
      Jakub Jelinek committed
    • re PR tree-optimization/51042 (endless recursion in phi_translate) · 4da80bfb
      2011-11-10  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/51042
      	* tree-ssa-pre.c (phi_translate_1): Avoid recursing on
      	self-referential expressions.  Refactor code to avoid duplication.
      
      	* gcc.dg/torture/pr51042.c: New testcase.
      
      From-SVN: r181256
      Richard Guenther committed
    • re PR tree-optimization/51070 (ICE verify_gimple failed) · c07a8cb3
      2011-11-10  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/51070
      	* tree-loop-distribution.c (generate_builtin): Do not replace
      	the loop with a builtin if the partition contains statements which
      	results are used outside of the loop.
      	(pass_loop_distribution): Verify and collect.
      
      	* gcc.dg/torture/pr51070.c: New testcase.
      
      From-SVN: r181255
      Richard Guenther committed
    • re PR tree-optimization/51030 (PHI opt does not handle value-replacement with a transfer function) · 98dd3b73
      2011-11-10  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/51030
      	* tree-ssa-phiopt.c (jump_function_from_stmt): New function.
      	(value_replacement): Use it to handle trivial non-empty
      	intermediate blocks.
      
      	* gcc.dg/tree-ssa/phi-opt-6.c: New testcase.
      
      From-SVN: r181254
      Richard Guenther committed
    • re PR middle-end/51071 (ICE in gimple_has_side_effects, at gimple.c:2513) · 723afc44
      2011-11-10  Richard Guenther  <rguenther@suse.de>
      
      	PR middle-end/51071
      	* gimple.c (gimple_has_side_effects): Remove checking code
      	that doesn't belong here.
      
      	* gcc.dg/torture/pr51071.c: New testcase.
      
      From-SVN: r181253
      Richard Guenther committed
    • * gnat.dg/loop_optimization9.ad[sb]: New test. · 08d603d6
      From-SVN: r181252
      Eric Botcazou committed
    • re PR tree-optimization/51058 (ICE: gimple check: expected… · bac430c9
      re PR tree-optimization/51058 (ICE: gimple check: expected gimple_assign(error_mark), have gimple_call() in gimple_assign_rhs_code, at gimple.h:1992)
      
      
              PR tree-optimization/51058
              * tree-vect-slp.c (vect_get_constant_vectors): Handle CALL_EXPR.
      
      From-SVN: r181251
      Ira Rosen committed
    • re PR tree-optimization/51000 (ICE: in vect_get_store_cost, at… · 78048b1c
      re PR tree-optimization/51000 (ICE: in vect_get_store_cost, at tree-vect-stmts.c:923 on powerpc-apple-darwin9)
      
      	PR tree-optimization/51000
      	* tree-vect-patterns.c (vect_recog_bool_pattern): If adding
      	a pattern stmt for a bool store, adjust DR_STMT too.
      	Don't handle bool conversions to single bit precision lhs.
      	* tree-vect-stmts.c (vect_remove_stores): If next is a pattern
      	stmt, remove its related stmt and free its stmt_vinfo.
      	(free_stmt_vec_info): Free also pattern stmt's vinfo and
      	pattern def stmt's vinfo.
      	* tree-vect-loop.c (destroy_loop_vec_info): Don't try to
      	free pattern stmt's vinfo here.
      	(vect_transform_loop): When calling vect_remove_stores,
      	do gsi_next first and don't call gsi_remove.  If not strided
      	store, free stmt vinfo for gsi_stmt (si) rather than stmt.
      
      	* gcc.dg/vect/pr51000.c: New test.
      
      From-SVN: r181250
      Jakub Jelinek committed