Commit Graph

140082 Commits

Author SHA1 Message Date
Jason Merrill
3da33383b4 * pt.c (lookup_template_class_1): Clear elt.spec.
From-SVN: r226581
2015-08-04 11:18:45 -04:00
Jason Merrill
f107ee3310 * tree.c (build_target_expr): Copy the location from value.
From-SVN: r226580
2015-08-04 11:18:40 -04:00
Paolo Carlini
cb3582ef4b re PR c++/66392 (rejects-valid: copy-initialization through user-defined conversion sequence fails)
2015-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/66392
	* g++.dg/init/explicit4.C: New.

From-SVN: r226579
2015-08-04 14:54:07 +00:00
Bill Schmidt
9554d206df vec-cmp-sel.c: Avoid test failure on machines without VSX an Power8 vector support.
2015-08-04  Bill Schmidt  <wschmidt@vnet.linux.ibm.com>

	* gcc.target/powerpc/vec-cmp-sel.c: Avoid test failure on machines
	without VSX an Power8 vector support.

From-SVN: r226578
2015-08-04 14:09:23 +00:00
Richard Biener
c8136c3648 genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in generated code.
2015-08-04  Richard Biener  <rguenther@suse.de>

	* genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in
	generated code.
	(dt_operand::gen_gimple_expr): Adjust.

From-SVN: r226577
2015-08-04 13:55:26 +00:00
Richard Biener
59c20dc74d gimple-fold.c (gimple_fold_stmt_to_constant_1): Canonicalize bool compares on RHS.
2015-08-04  Richard Biener  <rguenther@suse.de>

	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Canonicalize
	bool compares on RHS.
	* match.pd: Add X ==/!= !X is false/true pattern.

	* gcc.dg/tree-ssa/ssa-ccp-38.c: New testcase.

From-SVN: r226576
2015-08-04 13:51:50 +00:00
Pawel Kupidura
058e4c71c2 aarch64.c: Change inner loop statement cost to be consistent with other targets.
gcc/
2015-08-04  Pawel Kupidura  <pawel.kupidura@arm.com>

	* config/aarch64/aarch64.c: Change inner loop statement cost
	to be consistent with other targets.

From-SVN: r226575
2015-08-04 13:44:41 +00:00
Christophe Lyon
69b23ad67f neon.md (neon_vget_lanev2di): Handle big-endian targets.
2015-08-04  Christophe Lyon  <christophe.lyon@linaro.org>

	* config/arm/neon.md (neon_vget_lanev2di): Handle big-endian
	targets.

From-SVN: r226574
2015-08-04 15:24:26 +02:00
Nathan Sidwell
c56df3e924 nvptx.h (struct nvptx_pseudo_info): Delete.
* config/nvptx/nvptx.h (struct nvptx_pseudo_info): Delete.
	(machine_function): Remove pseudos field.

From-SVN: r226573
2015-08-04 13:14:14 +00:00
Ben Elliston
29e8dc8484 Fix incorrect date in 2015-07-28 change.
From-SVN: r226572
2015-08-04 22:59:57 +10:00
H.J. Lu
75587afb18 Compile IAMCU tests with -fno-pie -no-pie
Since IAMCU tests clear all scratch integer registers with:

  asm __volatile__ ("xor %%eax, %%eax\n\t" \
                    "xor %%edx, %%edx\n\t" \
                    "xor %%ecx, %%ecx\n\t" \
                    ::: "eax", "edx", "ecx");

PIC register may be trashed between setting PIC register and using it.
This patch compiles AMCU tests with -fno-pie -no-pie.

	PR target/67110
	* gcc.target/i386/iamcu/abi-iamcu.exp (additional_flags): Add
	-fno-pie -no-pie.

From-SVN: r226570
2015-08-04 04:54:20 -07:00
Paolo Carlini
01003b8381 re PR c++/66427 (The compiler rejects too complex variable templates)
2015-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/66427
	* g++.dg/cpp1y/var-templ34.C: New.

From-SVN: r226568
2015-08-04 11:05:02 +00:00
Kyrylo Tkachov
91d0e8dec9 [AArch64][14/14] Reuse target_option_current_node when passing pragma string to target attribute
* config/aarch64/aarch64.c (aarch64_option_valid_attribute_p):
	Exit early and use target_option_current_node if processing current
	pragma.

From-SVN: r226567
2015-08-04 10:45:48 +00:00
Kyrylo Tkachov
e55edd82da [doc][13/14] Document AArch64 target attributes and pragmas
* doc/extend.texi (AArch64 Function Attributes): New node.
	(AArch64 Pragmas): Likewise.

From-SVN: r226566
2015-08-04 10:43:15 +00:00
Kyrylo Tkachov
0efacb57a4 [AArch64][12/14] Target attributes and target pragmas tests
* gcc.target/aarch64/pragma_cpp_predefs_1.c: New test.
	* gcc.target/aarch64/target_attr_1.c: Likewise.
	* gcc.target/aarch64/target_attr_2.c: Likewise.
	* gcc.target/aarch64/target_attr_3.c: Likewise.
	* gcc.target/aarch64/target_attr_4.c: Likewise.
	* gcc.target/aarch64/target_attr_5.c: Likewise.
	* gcc.target/aarch64/target_attr_6.c: Likewise.
	* gcc.target/aarch64/target_attr_7.c: Likewise.
	* gcc.target/aarch64/target_attr_8.c: Likewise.
	* gcc.target/aarch64/target_attr_9.c: Likewise.
	* gcc.target/aarch64/target_attr_10.c: Likewise.
	* gcc.target/aarch64/target_attr_11.c: Likewise.
	* gcc.target/aarch64/target_attr_12.c: Likewise.
	* gcc.target/aarch64/target_attr_13.c: Likewise.
	* gcc.target/aarch64/target_attr_14.c: Likewise.
	* gcc.target/aarch64/target_attr_15.c: Likewise.

From-SVN: r226565
2015-08-04 10:41:31 +00:00
Kyrylo Tkachov
e95a988ada [AArch64][11/14] Re-layout SIMD builtin types on builtin expansion
* config/aarch64/aarch64.c (aarch64_option_valid_attribute_p):
	Initialize simd builtins if TARGET_SIMD.
	* config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
	Make sure that the builtins are initialized only once no matter how
	many times the function is called.
	(aarch64_init_builtins): Unconditionally initialize crc builtins.
	(aarch64_relayout_simd_param): New function.
	(aarch64_simd_expand_args): Use above during argument expansion.
	* config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): Initialize
	simd builtins if TARGET_SIMD.
	* config/aarch64/aarch64-protos.h (aarch64_init_simd_builtins): New
	prototype.
	(aarch64_relayout_simd_types): Likewise.

	* gcc.target/aarch64/target_attr_crypto_ice_1.c: New test.

From-SVN: r226564
2015-08-04 10:39:42 +00:00
Kyrylo Tkachov
e4ea20c8eb [AArch64][10/14] Implement target pragmas
* config.gcc (aarch64*-*-*): Specify c_target_objs and cxx_target_objs.
	* config/aarch64/aarch64.h (REGISTER_TARGET_PRAGMAS): Define.
	(TARGET_CPU_CPP_BUILTINS): Redefine to call aarch64_cpu_cpp_builtins.
	* config/aarch64/aarch64.c (aarch64_override_options_internal): Remove
	static keyword.
	(aarch64_reset_previous_fndecl): New function.
	(aarch64_handle_attr_isa_flags): Handle "+nothing" in the beginning of
	the string.
	* config/aarch64/aarch64-c.c: New file.
	* config/aarch64/arm_acle.h: Add pragma +crc+nofp at the top.
	Push and pop options at beginning and end.  Remove ifdef
	__ARM_FEATURE_CRC32.
	* config/aarch64/arm_neon.h: Remove #ifdef check on __ARM_NEON.
	Add pragma +nothing+simd and +nothing+crypto where appropriate.
	* config/aarch64/t-aarch64 (aarch64-c.o): New rule.
	* config/aarch64/aarch64-protos.h (aarch64_cpu_cpp_builtins):
	Define prototype.
	(aarch64_register_pragmas): Likewise.
	(aarch64_reset_previous_fndecl): Likewise.
	(aarch64_process_target_attr): Likewise.
	(aarch64_override_options_internal): Likewise.

	* gcc.target/aarch64/arm_neon-nosimd-error.c: Delete.

From-SVN: r226563
2015-08-04 10:35:16 +00:00
Kyrylo Tkachov
1fd8d40c7f [AArch64][9/14] Implement TARGET_CAN_INLINE_P
* config/aarch64/aarch64.c (aarch64_tribools_ok_for_inlining_p):
	New function.
	(aarch64_can_inline_p): Likewise.
	(TARGET_CAN_INLINE_P): Define.

From-SVN: r226561
2015-08-04 10:17:13 +00:00
Kyrylo Tkachov
5a2c833115 [AArch64][8/14] Implement TARGET_OPTION_VALID_ATTRIBUTE_P
* common/config/aarch64/aarch64-common.c (aarch64_handle_option):
	Remove static.  Handle OPT_mgeneral_regs_only,
	OPT_mfix_cortex_a53_835769, OPT_mstrict_align,
	OPT_momit_leaf_frame_pointer.
	* config/aarch64/aarch64.c: Include opts.h and diagnostic.h
	(aarch64_attr_opt_type): New enum.
	(aarch64_attribute_info): New struct.
	(aarch64_handle_attr_arch): New function.
	(aarch64_handle_attr_cpu): Likewise.
	(aarch64_handle_attr_tune): Likewise.
	(aarch64_handle_attr_isa_flags): Likewise.
	(aarch64_attributes): New table.
	(aarch64_process_one_target_attr): New function.
	(num_occurences_in_str): Likewise.
	(aarch64_process_target_attr): Likewise.
	(aarch64_option_valid_attribute_p): Likewise.
	(TARGET_OPTION_VALID_ATTRIBUTE_P): Define.
	* config/aarch64/aarch64-protos.h: Include input.h
	(aarch64_handle_option): Declare prototype.

From-SVN: r226560
2015-08-04 10:14:00 +00:00
Kyrylo Tkachov
d78006d950 [AArch64][7/14] Implement TARGET_SET_CURRENT_FUNCTION
* config/aarch64/aarch64.h (SWITCHABLE_TARGET): Define.
	* config/aarch64/aarch64.c: Include target-globals.h
	(aarch64_previous_fndecl): New variable.
	(aarch64_set_current_function): New function.
	(TARGET_SET_CURRENT_FUNCTION): Define.

From-SVN: r226559
2015-08-04 10:10:28 +00:00
Kyrylo Tkachov
361fb3ee79 [AArch64][6/14] Implement TARGET_OPTION_SAVE/TARGET_OPTION_RESTORE
* config/aarch64/aarch64.opt (explicit_tune_core): New TargetVariable.
	(explicit_arch): Likewise.
	(x_aarch64_isa_flags): Likewise.
	(mgeneral-regs-only): Mark as Save.
	(mfix-cortex-a53-835769): Likewise.
	(mcmodel=): Likewise.
	(mstrict-align): Likewise.
	(momit-leaf-frame-pointer): Likewise.
	(mtls-dialect): Likewise.
	(master=): Likewise.
	* config/aarch64/aarch64.h (ASM_DECLARE_FUNCTION_NAME): Define.
	(aarch64_isa_flags): Remove extern declaration.
	* config/aarch64/aarch64.c (aarch64_validate_mcpu): Return a bool
	to indicate success or failure.
	(aarch64_validate_march): Likewise.
	(aarch64_validate_mtune): Likewise.
	(aarch64_isa_flags): Delete.
	(aarch64_override_options_internal): Access opts->x_aarch64_isa_flags
	instead of aarch64_isa_flags.
	(aarch64_get_tune_cpu): New function.
	(aarch64_get_arch): Likewise.
	(aarch64_override_options): Use above and set up explicit_tune_core
	and explicit_arch.
	(aarch64_print_extension): Move earlier in file.  Add isa_flags
	argument and use that instead of the global aarch64_isa_flags.
	(aarch64_option_save): New function.
	(aarch64_option_restore): Likewise.
	(aarch64_option_print): Likewise.
	(aarch64_declare_function_name): Likewise.
	(aarch64_start_file): Delete.
	(TARGET_ASM_FILE_START): Do not define.
	(TARGET_OPTION_RESTORE, TARGET_OPTION_PRINT): Define.
	* config/aarch64/aarch64-protos.h (aarch64_declare_function_name):
	Declare prototype.

From-SVN: r226558
2015-08-04 10:06:51 +00:00
Kyrylo Tkachov
bca541c364 [AArch64][5/14] Make flag_omit_leaf_frame_pointer intialize to 2. Define and use TARGET_OMIT_LEAF_FRAME_POINTER
* config/aarch64/aarch64.opt (momit-leaf-frame-pointer): Initialize
	flag_omit_leaf_frame_pointer to 2.

From-SVN: r226557
2015-08-04 10:02:56 +00:00
Kyrylo Tkachov
b32c104353 [AArch64][4/14] Create TARGET_FIX_ERR_A53_835769 and use that instead of aarch64_fix_a53_err835769
* config/aarch64/aarch64.h (TARGET_FIX_ERR_A53_835769_DEFAULT): Always
        define to 0 or 1.
        (TARGET_FIX_ERR_A53_835769): New macro.
        * config/aarch64/aarch64.c (aarch64_override_options_internal): Remove
        handling of opts->x_aarch64_fix_a53_err835769.
        (aarch64_madd_needs_nop): Check for TARGET_FIX_ERR_A53_835769 rather
        than aarch64_fix_a53_err835769.
        * config/aarch64/aarch64-elf-raw.h: Update for above changes.
        * config/aarch64/aarch64-linux.h: Likewise.

From-SVN: r226556
2015-08-04 10:01:06 +00:00
Uros Bizjak
eadc745824 i386.c (ix86_expand_int_movcc): Check result of ix86_expand_int_movcc as boolean.
* config/i386/i386.c (ix86_expand_int_movcc): Check result of
	ix86_expand_int_movcc as boolean.

From-SVN: r226555
2015-08-04 11:54:08 +02:00
Kyrylo Tkachov
0cfff2a1d9 [AArch64][3/14] Refactor option override code
* config/aarch64/aarch64.opt (aarch64_arch_string): Delete.
	(aarch64_cpu_string): Likewise.
	(aarch64_tune_string): Likewise.
	* config/aarch64/aarch64.c (aarch64_parse_opt_result): New enum.
	(aarch64_parse_extension): Return aarch64_parse_opt_result.
	Add extra argument to put result into.
	(aarch64_parse_arch): Likewise.  Do not set selected_cpu.
	(aarch64_parse_cpu): Add arguments to put results into. Return
	aarch64_parse_opt_result.
	(aarch64_parse_tune): Likewise.
	(aarch64_override_options_after_change_1): New function.
	(aarch64_override_options_internal): New function.
	(aarch64_validate_mcpu): Likewise.
	(aarch64_validate_march): Likewise.
	(aarch64_validate_mtune): Likewise.
	(aarch64_override_options): Update to reflect above changes.
	Move some logic into aarch64_override_options_internal.
	Initialize target_option_default_node and target_option_current_node.
	(aarch64_override_options_after_change): Move logic into
	aarch64_override_options_after_change_1 and call it with global_options.
	(initialize_aarch64_code_model): Take a gcc_options pointer and use the
	flag values from that.

	* gcc.target/aarch64/cpu-diagnostics-3.c: Update expected error
	message.

From-SVN: r226554
2015-08-04 09:52:52 +00:00
Kyrylo Tkachov
393ae126e4 [AArch64][2/14] Refactor arches handling, add arch enum identifier
* config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define
	__ARM_ARCH_8A directly rather than with cpp_define_formatted.
	* config/aarch64/aarch64.c (struct processor): Add arch field.
	(all_architectures): Handle above, move above all_cores.
	(all_cores): Handle above.
	(aarch64_parse_arch): Handle above changes.
	* config/aarch64/aarch64-arches.def (armv8-a): Extend according to
	above.  Update comments.
	(armv8.1-a): Likewise.
	* config/aarch64/aarch64-cores.def: Update according to above.
	* config/aarch64/aarch64-opts.h (aarch64_arch): New enum.
	* config/aarch64/driver-aarch64.c (struct aarch64_arch): Rename to
	aarch64_arch_driver_info.

From-SVN: r226553
2015-08-04 09:47:49 +00:00
Kyrylo Tkachov
46806c44a4 [AArch64][1/14] Add ident field to struct processor
* config/aarch64/aarch64.c (struct processor): Add ident field.
        Rename core sched_core.
        (all_cores): Handle above changes.
        (all_architectures): Likewise.
        (aarch64_parse_arch): Likewise.
        (aarch64_override_options): Likewise.

From-SVN: r226552
2015-08-04 09:44:18 +00:00
Richard Biener
4b1b9e64ce gimple-fold.c (gimple_fold_stmt_to_constant_1): Remove dispatching to fold_binary for GIMPLE_BINARY_RHS and for comparisons...
2015-08-04  Richard Biener  <rguenther@suse.de>

	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Remove
	dispatching to fold_binary for GIMPLE_BINARY_RHS and for
	comparisons embedded in [VEC_]COND_EXPRs.

From-SVN: r226551
2015-08-04 09:40:54 +00:00
Uros Bizjak
f8bdb6a56b * config/fpu-387.h: Remove unwanted whitespace.
From-SVN: r226550
2015-08-04 11:24:15 +02:00
Uros Bizjak
9f8aa64ac1 fpu-387.h (get_fpu_trap_exceptions): Add temporary variable to improve generated code.
* config/fpu-387.h (get_fpu_trap_exceptions): Add temporary variable
	to improve generated code.

From-SVN: r226549
2015-08-04 11:16:52 +02:00
Francois-Xavier Coudert
22a499884f re PR fortran/64022 ([F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables)
PR fortran/64022

	* simplify.c (gfc_simplify_ieee_selected_real_kind): Extend IEEE
	support to all real kinds.

	* ieee/ieee_exceptions.F90: Support all real kinds.
	* ieee/ieee_arithmetic.F90: Likewise.
	* ieee/ieee_helper.c (ieee_class_helper_10,
	ieee_class_helper_16): New functions
	* gfortran.map (GFORTRAN_1.7): Add entries.

	* gfortran.dg/ieee/ieee_7.f90: Adjust test.
	* gfortran.dg/ieee/large_1.f90: New test.

From-SVN: r226548
2015-08-04 07:27:19 +00:00
Abe Skolnik
0ad23163d0 tree-if-conv.c: Fix various typos in comments.
* tree-if-conv.c: Fix various typos in comments.
	* tree-vect-stmts.c: Likewise.

From-SVN: r226544
2015-08-03 21:53:10 -06:00
Ian Lance Taylor
f48495834f runtime: initialize variable to avoid compiler warning
Reviewed-on: https://go-review.googlesource.com/13095

From-SVN: r226543
2015-08-04 03:39:21 +00:00
Thomas Preud'homme
43d56ad78d re PR debug/67043 (-fcompare-debug failure with -O3)
2015-08-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR tree-optimization/67043
    * loop-invariant.c (move_invariant_reg): Recompute luids in loop
    preheader after hoisting invariant in it.
    (find_defs): Force recomputation of all luids.

    gcc/testsuite/
    PR tree-optimization/67043
    * gcc.dg/pr67043.c: New test.

From-SVN: r226540
2015-08-04 02:11:58 +00:00
Nathan Sidwell
9ebddeb045 plugin-nvptx.c: Don't include dlfcn.h.
* plugin/plugin-nvptx.c: Don't include dlfcn.h.
	(cuda_errlist): Constify.
	(errmsg):  Move into ...
	(cuda_error): ... here.  Make smaller.
	(_XSTR, _STR): Delete.
	(cuda_synames): Delete.
	(verify_device_library): Delete.
	(nvptx_init): Don't call it.

From-SVN: r226539
2015-08-04 00:40:18 +00:00
GCC Administrator
1f1833cce0 Daily bump.
From-SVN: r226538
2015-08-04 00:16:13 +00:00
Ian Lance Taylor
1ca95ba067 syscall: RawSockaddr fix for ppc64, ppc64le
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
2015-08-03 21:18:56 +00:00
Peter Bergner
ab977fd881 htm.md (tabort.): Restrict the source operand to using a base register.
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
2015-08-03 16:11:20 -05:00
David Malcolm
afed345982 Refactoring of timevar API
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
2015-08-03 20:14:21 +00:00
Ian Lance Taylor
ef9da28d8f compiler: Don't allow multiple function declarations.
Fixes golang/go#11573.
    
    Reviewed-on: https://go-review.googlesource.com/12508

From-SVN: r226529
2015-08-03 19:55:00 +00:00
Alexander Basov
de0fb9055c re PR middle-end/64744 (ARM: gcc internal compiler error: in store_field, at expr.c:6659)
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
2015-08-03 13:34:31 -06:00
Ian Lance Taylor
f2fef1c8a3 compiler: Don't make erroneous type descriptors.
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
2015-08-03 18:53:56 +00:00
Ian Lance Taylor
ca81dee392 libgo/testsuite: kill sleep process in gotest
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
2015-08-03 18:23:42 +00:00
Ian Lance Taylor
3d6d2a63b2 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
2015-08-03 17:54:50 +00:00
John David Anglin
8a9212788d re PR target/67060 (FAIL: gcc.dg/pr56228.c (test for excess errors))
PR target/67060
	* config/pa/pa.md (call_reg_64bit): Remove reg:DI 1 clobber.
	Adjust splits to match new pattern.

From-SVN: r226522
2015-08-03 17:26:19 +00:00
Michael Meissner
c477a66743 vector.md (VEC_L): Add KFmode and TFmode.
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
2015-08-03 17:06:24 +00:00
H.J. Lu
472fd3cce4 Add a testcase for PR tree-optimization/67077
PR tree-optimization/67077
	* gcc.dg/pr67077.c: New test.

From-SVN: r226518
2015-08-03 09:58:03 -07:00
Steven G. Kargl
5c4aa279fe 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
2015-08-03 16:56:39 +00:00
Jeff Law
c2a96ec20f re PR middle-end/66314 (ice in verify_loop_structure)
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
2015-08-03 10:26:13 -06:00
Jonathan Wakely
93411db8c7 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
2015-08-03 16:56:17 +01:00