1. 04 Aug, 2015 34 commits
    • re PR c++/66392 (rejects-valid: copy-initialization through user-defined conversion sequence fails) · cb3582ef
      2015-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/66392
      	* g++.dg/init/explicit4.C: New.
      
      From-SVN: r226579
      Paolo Carlini committed
    • vec-cmp-sel.c: Avoid test failure on machines without VSX an Power8 vector support. · 9554d206
      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
      Bill Schmidt committed
    • genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in generated code. · c8136c36
      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
      Richard Biener committed
    • gimple-fold.c (gimple_fold_stmt_to_constant_1): Canonicalize bool compares on RHS. · 59c20dc7
      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
      Richard Biener committed
    • aarch64.c: Change inner loop statement cost to be consistent with other targets. · 058e4c71
      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
      Pawel Kupidura committed
    • neon.md (neon_vget_lanev2di): Handle big-endian targets. · 69b23ad6
      2015-08-04  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	* config/arm/neon.md (neon_vget_lanev2di): Handle big-endian
      	targets.
      
      From-SVN: r226574
      Christophe Lyon committed
    • nvptx.h (struct nvptx_pseudo_info): Delete. · c56df3e9
      	* config/nvptx/nvptx.h (struct nvptx_pseudo_info): Delete.
      	(machine_function): Remove pseudos field.
      
      From-SVN: r226573
      Nathan Sidwell committed
    • Fix incorrect date in 2015-07-28 change. · 29e8dc84
      From-SVN: r226572
      Ben Elliston committed
    • Compile IAMCU tests with -fno-pie -no-pie · 75587afb
      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
      H.J. Lu committed
    • re PR c++/66427 (The compiler rejects too complex variable templates) · 01003b83
      2015-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/66427
      	* g++.dg/cpp1y/var-templ34.C: New.
      
      From-SVN: r226568
      Paolo Carlini committed
    • [AArch64][14/14] Reuse target_option_current_node when passing pragma string to target attribute · 91d0e8de
      	* config/aarch64/aarch64.c (aarch64_option_valid_attribute_p):
      	Exit early and use target_option_current_node if processing current
      	pragma.
      
      From-SVN: r226567
      Kyrylo Tkachov committed
    • [doc][13/14] Document AArch64 target attributes and pragmas · e55edd82
      	* doc/extend.texi (AArch64 Function Attributes): New node.
      	(AArch64 Pragmas): Likewise.
      
      From-SVN: r226566
      Kyrylo Tkachov committed
    • [AArch64][12/14] Target attributes and target pragmas tests · 0efacb57
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][11/14] Re-layout SIMD builtin types on builtin expansion · e95a988a
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][10/14] Implement target pragmas · e4ea20c8
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][9/14] Implement TARGET_CAN_INLINE_P · 1fd8d40c
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][8/14] Implement TARGET_OPTION_VALID_ATTRIBUTE_P · 5a2c8331
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][7/14] Implement TARGET_SET_CURRENT_FUNCTION · d78006d9
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][6/14] Implement TARGET_OPTION_SAVE/TARGET_OPTION_RESTORE · 361fb3ee
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][5/14] Make flag_omit_leaf_frame_pointer intialize to 2. Define and use… · bca541c3
      [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
      Kyrylo Tkachov committed
    • [AArch64][4/14] Create TARGET_FIX_ERR_A53_835769 and use that instead of aarch64_fix_a53_err835769 · b32c1043
              * 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
      Kyrylo Tkachov committed
    • i386.c (ix86_expand_int_movcc): Check result of ix86_expand_int_movcc as boolean. · eadc7458
      	* config/i386/i386.c (ix86_expand_int_movcc): Check result of
      	ix86_expand_int_movcc as boolean.
      
      From-SVN: r226555
      Uros Bizjak committed
    • [AArch64][3/14] Refactor option override code · 0cfff2a1
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][2/14] Refactor arches handling, add arch enum identifier · 393ae126
      	* 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
      Kyrylo Tkachov committed
    • [AArch64][1/14] Add ident field to struct processor · 46806c44
              * 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
      Kyrylo Tkachov committed
    • gimple-fold.c (gimple_fold_stmt_to_constant_1): Remove dispatching to… · 4b1b9e64
      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
      Richard Biener committed
    • * config/fpu-387.h: Remove unwanted whitespace. · f8bdb6a5
      From-SVN: r226550
      Uros Bizjak committed
    • fpu-387.h (get_fpu_trap_exceptions): Add temporary variable to improve generated code. · 9f8aa64a
      	* config/fpu-387.h (get_fpu_trap_exceptions): Add temporary variable
      	to improve generated code.
      
      From-SVN: r226549
      Uros Bizjak committed
    • re PR fortran/64022 ([F2003][IEEE] ieee_support_flag does not handle kind=10 and… · 22a49988
      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
      Francois-Xavier Coudert committed
    • tree-if-conv.c: Fix various typos in comments. · 0ad23163
      	* tree-if-conv.c: Fix various typos in comments.
      	* tree-vect-stmts.c: Likewise.
      
      From-SVN: r226544
      Abe Skolnik committed
    • re PR debug/67043 (-fcompare-debug failure with -O3) · 43d56ad7
      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
      Thomas Preud'homme committed
    • plugin-nvptx.c: Don't include dlfcn.h. · 9ebddeb0
      	* 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
      Nathan Sidwell committed
    • Daily bump. · 1f1833cc
      From-SVN: r226538
      GCC Administrator committed
  2. 03 Aug, 2015 6 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