1. 04 Aug, 2015 12 commits
  2. 03 Aug, 2015 28 commits
    • syscall: RawSockaddr fix for ppc64, ppc64le · 1ca95ba0
          
          The struct RawSockaddr contains a field Data which
          should be uint8 on ppc64 and ppc64le, but is declared
          as int8 in gccgo.  This change adds a two new files
          which contain the structure declaration for
          RawSockaddr, one with the correct types for for ppc64
          and ppc64le, and the other for non-ppc64 platforms.
          
          Fixes golang/go#11469
          
          Reviewed-on: https://go-review.googlesource.com/11946
      
      From-SVN: r226533
      Ian Lance Taylor committed
    • htm.md (tabort.): Restrict the source operand to using a base register. · ab977fd8
      gcc/
      	* config/rs6000/htm.md (tabort.): Restrict the source operand to
      	using a base register.
      
      gcc/testsuite/
      	* gcc.target/powerpc/htm-tabort-no-r0.c: New test.
      
      From-SVN: r226532
      Peter Bergner committed
    • Refactoring of timevar API · afed3459
      gcc/ChangeLog:
      	* main.c (main): Pass in NULL for toplev's external_timer.
      	* timevar.c: Include coretypes.h.
      	(class timer::named_items): New.
      	(timer::named_items::named_items): New.
      	(timer::named_items::~named_items): New.
      	(timer::named_items::push): New.
      	(timer::named_items::pop): New.
      	(timer::named_items::print): New.
      	(timer::timer): Initialize field "m_jit_client_items".
      	(timer::~timer): New.
      	(timer::push): Move bulk of implementation to...
      	(timer::push_internal): ...here.  New function.
      	(timer::pop): Move bulk of implementation to...
      	(timer::pop_internal): ...here.  New function.
      	(timer::push_client_item): New.
      	(timer::pop_client_item): New.
      	(timer::print_row): New function, taken from timer::print.
      	(timer::print): Print "GCC items" header if we also have client
      	items.  Move row-printing to timer::print_row.  Print any client
      	items.
      	(timer::get_topmost_item_name): New method.
      	* timevar.def (TV_JIT_ACQUIRING_MUTEX): New.
      	(TV_JIT_CLIENT_CODE): New.
      	* timevar.h (timer::push_client_item): New declaration.
      	(timer::pop_client_item): New declaration.
      	(timer::get_topmost_item_name): New method.
      	(timer::push_internal): New declaration.
      	(timer::pop_internal): New declaration.
      	(timer::print_row): New declaration.
      	(timer::named_items): New declaration.
      	(timer::m_jit_client_items): New field.
      	(timer): Add friend class named_items.
      	(auto_timevar::auto_timevar): Add timer param.
      	(auto_timevar::~auto_timevar): Use field "m_timer".
      	(auto_timevar::m_timer): New field.
      	* toplev.c (initialize_rtl): Add g_timer as param when
      	constructing auto_timevar instance.
      	(toplev::toplev): Add "external_timer" param, and use it to
      	initialize the "g_timer" global if non-NULL.
      	(toplev::~toplev): If this created "g_timer", delete it.
      	* toplev.h (toplev::toplev): Replace "use_TV_TOTAL" bool param
      	with "external_timer" timer *.
      
      gcc/jit/ChangeLog:
      	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_4): New.
      	* docs/topics/contexts.rst (GCC_JIT_BOOL_OPTION_DUMP_SUMMARY):
      	We no longer show a profile.
      	* docs/topics/index.rst (Topic Reference): Add performance.rst.
      	* docs/topics/performance.rst: New file.
      	* docs/_build/texinfo/libgccjit.texi: Regenerate.
      	* jit-playback.c (gcc::jit::playback::context::compile): Add timer
      	param when constructing the "toplev" instance.
      	(gcc::jit::playback::context::acquire_mutex): Add timer param when
      	constructing auto_timevar instance.
      	(gcc::jit::playback::context::make_fake_args): If we have a timer,
      	add "-ftime-report".
      	(gcc::jit::playback::context::invoke_driver): Add timer param when
      	constructing auto_timevar instance.
      	(gcc::jit::playback::context::dlopen_built_dso): Likewise.
      	* jit-playback.h (gcc::jit::playback::context::get_timer): New accessor.
      	* jit-recording.c: Include timevar.h.
      	(gcc::jit::recording::context::context): Initialize field "m_timer".
      	* jit-recording.h: Add forward declaration of class timer.
      	(gcc::jit::recording::context::set_timer): New method.
      	(gcc::jit::recording::context::get_timer): New method.
      	(gcc::jit::recording::context::m_timer): New field.
      	* libgccjit++.h (gccjit::timer): New class.
      	(gccjit::auto_time): New class.
      	(gccjit::context::set_timer): New method.
      	(gccjit::context::get_timer): New.
      	(gccjit::timer::timer): New.
      	(gccjit::timer::push): New.
      	(gccjit::timer::pop): New.
      	(timer::print): New.
      	(timer::get_inner_timer): New.
      	(timer::release): New.
      	(auto_time::auto_time): New.
      	(auto_time::~auto_time): New.
      	* libgccjit.c: Include timevar.h.
      	(struct gcc_jit_timer): New.
      	(gcc_jit_timer_new): New function.
      	(gcc_jit_timer_release): New function.
      	(gcc_jit_context_set_timer): New function.
      	(gcc_jit_context_get_timer): New function.
      	(gcc_jit_timer_push): New function.
      	(gcc_jit_timer_pop): New function.
      	(gcc_jit_timer_print): New function.
      	* libgccjit.h (LIBGCCJIT_HAVE_TIMING_API): New macro.
      	(gcc_jit_timer): New typedef.
      	(gcc_jit_timer_new): New function.
      	(gcc_jit_timer_release): New function.
      	(gcc_jit_context_set_timer): New function.
      	(gcc_jit_context_get_timer): New function.
      	(gcc_jit_timer_push): New function.
      	(gcc_jit_timer_pop): New function.
      	(gcc_jit_timer_print): New function.
      	* libgccjit.map (LIBGCCJIT_ABI_4): New.
      	(gcc_jit_timer_new): New function.
      	(gcc_jit_timer_release): New function.
      	(gcc_jit_context_set_timer): New function.
      	(gcc_jit_context_get_timer): New function.
      	(gcc_jit_timer_push): New function.
      	(gcc_jit_timer_pop): New function.
      	(gcc_jit_timer_print): New function.
      
      gcc/testsuite/ChangeLog:
      	* jit.dg/test-benchmark.c (test_jit): Add param "timer" and use
      	it to push/pop timing items.
      	(main): For each optimization level, create a gcc_jit_timer, and
      	time all of the iteration within that level cumulatively.
      	* jit.dg/test-error-gcc_jit_timer_pop-mismatch.c: New test case.
      	* jit.dg/test-error-gcc_jit_timer_pop-too-many.c: New test case.
      
      From-SVN: r226530
      David Malcolm committed
    • compiler: Don't allow multiple function declarations. · ef9da28d
          
          Fixes golang/go#11573.
          
          Reviewed-on: https://go-review.googlesource.com/12508
      
      From-SVN: r226529
      Ian Lance Taylor committed
    • re PR middle-end/64744 (ARM: gcc internal compiler error: in store_field, at expr.c:6659) · de0fb905
      	PR middle-end/64744
      	PR middle-end/48470
      	PR middle-end/43404
      	* cfgexpand.c (expand_one_var): Add check if stack is going to
      	be used in naked function.
      	* expr.c (expand_expr_addr_expr_1): Remove excess checking
      	whether expression should not reside in MEM.
      	* function.c (use_register_for_decl): Do not use registers for
      	non-register things (volatile, float, BLKMode) in naked functions.
      
      	PR middle-end/64744
      	PR middle-end/48470
      	PR middle-end/43404
      	* gcc.target/arm/pr43404.c : New testcase.
      	* gcc.target/arm/pr48470.c : New testcase.
      	* gcc.target/arm/pr64744-1.c : New testcase.
      	* gcc.target/arm/pr64744-2.c : New testcase.
      
      From-SVN: r226528
      Alexander Basov committed
    • compiler: Don't make erroneous type descriptors. · f2fef1c8
          
          There is no need to make type descriptors for named types when there
          are errors during package compilation.  Particularly, if the error in
          package compilation is from a malformed named type, there is no
          guarantee a type descriptor can be created.
          
          Fixes golang/go#11560.
          
          Reviewed-on: https://go-review.googlesource.com/12792
      
      From-SVN: r226527
      Ian Lance Taylor committed
    • libgo/testsuite: kill sleep process in gotest · ca81dee3
          
          This change modifies the "gotest" shell script
          to kill all processes, including "sleep", spawned
          by the timeout subshell. This prevents the sleep
          process from living beyond the gotest process.
          
          BACKGROUND
          
          The "gotest" shell script spawns "sleep" processes
          in the background to kill off test cases that run
          past their specified timeout. There are commands
          included that appear to kill the sleep process,
          but they only kill the parent shell, causing the
          sleep process to reparent.
          
          The orphaned sleep process can cause issues when
          gotest is run under some build systems, such as
          Ninja [0]. The particular issue with Ninja is the
          method it uses to identify terminated processes:
          it creates a pipe, passes the write end to the
          child process, and waits for EOF. In the case of
          libgo/gotest, the orphaned sleep process inherits
          the pipe FD and keeps it open for 4 minutes by
          default.
          
          [0] https://github.com/martine/ninja
          
          Reviewed-on: https://go-review.googlesource.com/12227
      
      From-SVN: r226526
      Ian Lance Taylor committed
    • re PR go/67101 (mprof.goc:408:5: error: calling ‘__builtin_frame_address’ with a… · 3d6d2a63
      re PR go/67101 (mprof.goc:408:5: error: calling ‘__builtin_frame_address’ with a nonzero argument is unsafe [-Werror=frame-address])
      
      	PR go/67101
      
          runtime: Remove call to __builtin_frame_address.
          
          __builtin_frame_address was only supposed to use nonzero arguments
          for debugging purposes.  Calling it with nonzero arguments can have
          unpredictable results and uses are now marked unsafe when
          -Wframe-address is enabled.
          
          Reviewed-on: https://go-review.googlesource.com/13063
      
      From-SVN: r226525
      Ian Lance Taylor committed
    • re PR target/67060 (FAIL: gcc.dg/pr56228.c (test for excess errors)) · 8a921278
      	PR target/67060
      	* config/pa/pa.md (call_reg_64bit): Remove reg:DI 1 clobber.
      	Adjust splits to match new pattern.
      
      From-SVN: r226522
      John David Anglin committed
    • vector.md (VEC_L): Add KFmode and TFmode. · c477a667
      2015-08-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/vector.md (VEC_L): Add KFmode and TFmode.
      	(VEC_M): Likewise.
      	(VEC_N): Likewise.
      	(mov<mode>, VEC_M iterator): Add support for IEEE 128-bit floating
      	point in VSX registers.
      
      	* config/rs6000/constraints.md (wb constraint): Document unused
      	w<x> constraint.
      	(we constraint): Likewise.
      	(wo constraint): Likewise.
      	(wp constraint): New constraint for IEEE 128-bit floating point in
      	VSX registers.
      	(wq constraint): Likewise.
      
      	* config/rs6000/predicates.md (easy_fp_constant): Add support for
      	IEEE 128-bit floating point in VSX registers.
      	(easy_scalar_constant): Likewise.
      
      	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Add new
      	constraints (wp, wq) for IEEE 128-bit floating point in VSX
      	registers.
      	(rs6000_init_hard_regno_mode_ok): Likewise.
      
      	* config/rs6000/vsx.md (VSX_LE_128): Add support for IEEE 128-bit
      	floating point in VSX registers.
      	(VSX_L): Likewise.
      	(VSX_M): Likewise.
      	(VSX_M2): Likewise.
      	(VSm): Likewise.
      	(VSs): Likewise.
      	(VSr): Likewise.
      	(VSa): Likewise.
      	(VSv): Likewise.
      	(vsx_le_permute_<mode>): Add support to properly swap bytes for
      	IEEE 128-bit floating point in VSX registers on little endian.
      	(vsx_le_undo_permute_<mode>): Likewise.
      	(vsx_le_perm_load_<mode>): Likewise.
      	(vsx_le_perm_store_<mode>): Likewise.
      	(splitters for IEEE 128-bit fp moves): Likewise.
      
      	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add wp and
      	wq constraints.
      
      	* config/rs6000/altivec.md (VM): Add support for IEEE 128-bit
      	floating point in VSX registers.
      	(VM2): Likewise.
      
      	* doc/md.text (Machine Constraints): Document wp and wq
      	constraints on PowerPC.
      
      From-SVN: r226520
      Michael Meissner committed
    • Add a testcase for PR tree-optimization/67077 · 472fd3cc
      	PR tree-optimization/67077
      	* gcc.dg/pr67077.c: New test.
      
      From-SVN: r226518
      H.J. Lu committed
    • re PR fortran/66942 (trans-expr.c:5701 runtime error: member call on null… · 5c4aa279
      re PR fortran/66942 (trans-expr.c:5701 runtime error: member call on null pointer of type 'struct vec')
      
      2015-08-03  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/66942
      	* trans-expr.c (gfc_conv_procedure_call): Avoid NULL pointer reference
      
      From-SVN: r226517
      Steven G. Kargl committed
    • re PR middle-end/66314 (ice in verify_loop_structure) · c2a96ec2
      	PR middle-end/66314
      	PR gcov-profile/66899
      	* tree-ssa-threadupdate.c (mark_threaded_blocks): Correctly
      	iterate over the jump threading paths when an element in the
      	jump threading paths array is eliminated.
      
      	PR middle-end/66314
      	PR gcov-profile/66899
      	* gcc.dg/pr66899.c: New test.
      	* gcc.dg/pr66314.c: New test.
      
      From-SVN: r226516
      Jeff Law committed
    • re PR libstdc++/67078 (FAIL: 24_iterators/container_access.cc (test for excess… · 93411db8
      re PR libstdc++/67078 (FAIL: 24_iterators/container_access.cc (test for excess errors) on aarch64-none-elf)
      
      	PR libstdc++/67078
      	* include/bits/range_access.h (size, empty, data): Fix _N bad name.
      
      From-SVN: r226515
      Jonathan Wakely committed
    • Avoid recomputing the defining predicate chains for the same PHI · c0503346
      gcc/ChangeLog:
      
      	* tree-ssa-uninit.c (find_uninit_use): Declare and pass to
      	is_use_properly_guarded the variable def_preds.  Free its
      	contents before returning.
      	(prune_uninit_phi_opnds_in_unrealizable_paths): Same.
      	(is_use_properly_guarded): Replace local variable def_preds with
      	a parameter.  Adjust accordingly.  Only update *def_preds if it's
      	the empty vector.
      
      From-SVN: r226511
      Patrick Palka committed
    • re PR c/67088 (Incorrect location of error on invalid type used in bit-field declaration) · 420a9d9b
      	PR c/67088
      	* c-decl.c (check_bitfield_type_and_width): Add location parameter.
      	Use it.
      	(grokdeclarator): Pass LOC down to check_bitfield_type_and_width.
      
      	* gcc.dg/pr67088.c: New test.
      
      From-SVN: r226506
      Marek Polacek committed
    • genmatch.c (simplify::for_subst_vec): New member. · 50301115
      2015-08-03  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (simplify::for_subst_vec): New member.
      	(binary_ok): New helper for for lowering.
      	(lower_for): Delay substituting operators into result expressions
      	if we can merge the results eventually again.
      	(capture_info::walk_result): Adjust for user_id appearing as
      	result expression operator.
      	(expr::gen_transform): Likewise.
      	(dt_simplify::gen_1): Likewise.
      	(dt_simplify::gen): Pass not substituted operators to tail
      	functions or initialize local variable with it.
      	(decision_tree::gen): Adjust function signature.
      	* match.pd: Fix tests against global code and add default
      	cases to switch stmts.
      
      From-SVN: r226505
      Richard Biener committed
    • genmatch.c (simplify::for_subst_vec): New member. · d4b71b95
      2015-08-03  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (simplify::for_subst_vec): New member.
      	(binary_ok): New helper for for lowering.
      	(lower_for): Delay substituting operators into result expressions
      	if we can merge the results eventually again.
      	(capture_info::walk_result): Adjust for user_id appearing as
      	result expression operator.
      	(expr::gen_transform): Likewise.
      	(dt_simplify::gen_1): Likewise.
      	(dt_simplify::gen): Pass not substituted operators to tail
      	functions or initialize local variable with it.
      	(decision_tree::gen): Adjust function signature.
      	* match.pd: Fix tests against global code and add default
      	cases to switch stmts.
      
      From-SVN: r226504
      Richard Biener committed
    • genmatch.c (dt_simplify::gen): Create captures array with an initializer. · 1d2fdec6
      2015-08-03  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (dt_simplify::gen): Create captures array
      	with an initializer.
      
      From-SVN: r226503
      Richard Biener committed
    • configure.ac: Set aliasing_flags to -fno-strict-aliasing if... · 4c0cca18
      gcc/ChangeLog:
      
      	* configure.ac: Set aliasing_flags to -fno-strict-aliasing if
      	the host compiler is affected by placement new aliasing bug.
      	* configure: Regenerate.
      	* Makefile.in (ALIASING_FLAGS): New variable.
      	(ALL_CXXFLAGS): Add $(ALIASING_FLAGS).
      
      From-SVN: r226499
      Ulrich Weigand committed
    • [ARM] PR target/66731 Fix vnmul insn with -frounding-math · 1f71aee9
      gcc:
      
      	PR target/66731
      	* config/arm/vfp.md (negmuldf3_vfp): Add new pattern.
      	(negmulsf3_vfp): Likewise.
      	(muldf3negdf_vfp): Disable for -frounding-math.
      	(mulsf3negsf_vfp): Likewise.
      	* config/arm/arm.c (arm_new_rtx_costs): Fix NEG cost for VNMUL,
      	fix MULT cost with -frounding-math.
      
      gcc/testsuite:
      
      	PR target/66731
      	* gcc.target/arm/vnmul-1.c: New.
      	* gcc.target/arm/vnmul-2.c: New.
      	* gcc.target/arm/vnmul-3.c: New.
      	* gcc.target/arm/vnmul-4.c: New.
      
      From-SVN: r226496
      Szabolcs Nagy committed
    • Fix random class_allocate_18.f90 failure · 2ab320ad
      	PR fortran/64921
      gcc/fortran/
      	* class.c (generate_finalization_wrapper): Set finalization
      	procedure symbol's always_explicit attribute.
      gcc/testsuite/
      	* gfortran.dg/class_allocate_20.f90: New.
      
      From-SVN: r226493
      Mikael Morin committed
    • [RTL-ifcvt] Improve conditional select ops on immediates · 44fef04a
      	* ifcvt.c (noce_try_store_flag_constants): Make logic of the case
      	when diff == STORE_FLAG_VALUE or diff == -STORE_FLAG_VALUE more
      	explicit.  Prefer to add the flag whenever possible.
      	(noce_process_if_block): Try noce_try_store_flag_constants before
      	noce_try_cmove.
      
      	* gcc.target/aarch64/csel_bfx_1.c: New test.
      	* gcc.target/aarch64/csel_imms_inc_1.c: Likewise.
      
      From-SVN: r226491
      Kyrylo Tkachov committed
    • genmatch.c (struct sinfo, [...]): New hash-map to record equivalent transforms. · 03038b8b
      2015-08-03  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (struct sinfo, struct sinfo_hashmap_traits, sinfo_map_t):
      	New hash-map to record equivalent transforms.
      	(dt_node::analyze): Populate the equivalent transforms hash-map.
      	(dt_simplify::info): Add reference to hash-map entry.
      	(dt_simplify::gen): If we have split out a function for the
      	transform, generate a call to it.
      	(sinfo_hashmap_traits::hash): New function.
      	(compare_op): New helper function for ...
      	(sinfo_hashmap_traits::equal_keys): ... this new function.
      	(decision_tree::gen): Split out common equivalent transforms
      	into functions.
      
      From-SVN: r226490
      Richard Biener committed
    • gimple-fold.c (fold_gimple_assign): Remove folding of the comparison in COND_EXPRs. · 5c099d40
      2015-08-03  Richard Biener  <rguenther@suse.de>
      
      	* gimple-fold.c (fold_gimple_assign): Remove folding of
      	the comparison in COND_EXPRs.
      
      From-SVN: r226489
      Richard Biener committed
    • gimple-match-head.c (gimple_simplify): For [VEC_]COND_EXPRs on the rhs of… · a0c012fd
      gimple-match-head.c (gimple_simplify): For [VEC_]COND_EXPRs on the rhs of assignments first simplify the embedded...
      
      2015-08-03  Richard Biener  <rguenther@suse.de>
      
      	* gimple-match-head.c (gimple_simplify): For [VEC_]COND_EXPRs
      	on the rhs of assignments first simplify the embedded
      	GENERIC condition.
      
      From-SVN: r226488
      Richard Biener committed
    • re PR tree-optimization/66917 (ARM: NEON: memcpy compiles to vst1 with incorrect alignment) · 52639a61
      2015-08-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/66917
      	* tree-vectorizer.h (struct dataref_aux): Add base_element_aligned
      	field.
      	(DR_VECT_AUX): New macro.
      	(set_dr_misalignment): Adjust.
      	(dr_misalignment): Likewise.
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment):
      	Compute whether the base is at least element aligned.
      	* tree-vect-stmts.c (ensure_base_align): Adjust.
      	(vectorizable_store): If the base is not element aligned
      	preserve alignment of the original access if misalignment is unknown.
      	(vectorizable_load): Likewise.
      
      From-SVN: r226487
      Richard Biener committed