1. 08 Nov, 2017 12 commits
    • [multiple changes] · e5148da0
      2017-11-08  Yannick Moy  <moy@adacore.com>
      
      	* sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report
      	about unused use-type or use-package clauses inside inlined bodies.
      
      2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter
      	In_Partial_Fin along with a comment on its usage. Do not guarantee the
      	prior elaboration of a unit when the need came from a partial
      	finalization context.
      	(In_Initialization_Context): Relocated to Process_Call.
      	(Is_Partial_Finalization_Proc): New routine.
      	(Process_Access): Add new parameter In_Partial_Fin along with a comment
      	on its usage.
      	(Process_Activation_Call): Add new parameter In_Partial_Fin along with
      	a comment on its usage.
      	(Process_Activation_Conditional_ABE_Impl): Add new parameter
      	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
      	diagnostics when the activation occurs in a partial finalization
      	context.
      	(Process_Activation_Guaranteed_ABE_Impl): Add new parameter
      	In_Partial_Fin along with a comment on its usage.
      	(Process_Call): Add new parameter In_Partial_Fin along with a comment
      	on its usage. A call is within a partial finalization context when it
      	targets a finalizer or primitive [Deep_]Finalize, and the call appears
      	in initialization actions. Pass this information down to the recursive
      	steps of the Processing phase.
      	(Process_Call_Ada): Add new parameter In_Partial_Fin along with a
      	comment on its usage. Remove the guard which suppresses the generation
      	of implicit Elaborate[_All] pragmas. This is now done in
      	Ensure_Prior_Elaboration.
      	(Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along
      	with a comment on its usage. Do not emit any ABE diagnostics when the
      	call occurs in a partial finalization context.
      	(Process_Call_SPARK): Add new parameter In_Partial_Fin along with a
      	comment on its usage.
      	(Process_Instantiation): Add new parameter In_Partial_Fin along with a
      	comment on its usage.
      	(Process_Instantiation_Ada): Add new parameter In_Partial_Fin along
      	with a comment on its usage.
      	(Process_Instantiation_Conditional_ABE): Add new parameter
      	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
      	diagnostics when the instantiation occurs in a partial finalization
      	context.
      	(Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along
      	with a comment on its usage.
      	(Process_Scenario): Add new parameter In_Partial_Fin along  with a
      	comment on its usage.
      	(Process_Single_Activation): Add new parameter In_Partial_Fin along
      	with a comment on its usage.
      	(Traverse_Body): Add new parameter In_Partial_Fin along with a comment
      	on its usage.
      
      2017-11-08  Arnaud Charlet  <charlet@adacore.com>
      
      	* sem_ch13.adb: Add optional parameter to Error_Msg.
      
      2017-11-08  Jerome Lambourg  <lambourg@adacore.com>
      
      	* fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema
      	for the Interfaces.* hierarchy as longer unit names are now allowed.
      
      2017-11-08  Arnaud Charlet  <charlet@adacore.com>
      
      	* sem_util.adb (Subprogram_Name): Emit sloc for the enclosing
      	subprogram as well.  Support more cases of entities.
      	(Append_Entity_Name): Add some defensive code.
      
      From-SVN: r254528
      Pierre-Marie de Rodat committed
    • PR 82869 Introduce logical_type_node and use it · 63ee5404
      Earlier GFortran used to redefine boolean_type_node, which in the rest
      of the compiler means the C/C++ _Bool/bool type, to the Fortran
      default logical type.  When this redefinition was removed, a few
      issues surfaced. Namely,
      
      1) PR 82869, where we created a boolean tmp variable, and passed it to
      the runtime library as a Fortran logical variable of a different size.
      
      2) Fortran specifies that logical operations should be done with the
      default logical kind, not in any other kind.
      
      3) Using 8-bit variables have some issues, such as
         - on x86, partial register stalls and length prefix changes.
         - s390 has a compare with immediate and jump instruction which
           works with 32-bit but not 8-bit quantities.
      
      This patch addresses these issues by introducing a type
      logical_type_node which is a Fortran LOGICAL variable of default
      kind. It is then used in places were the Fortran standard mandates, as
      well as for compiler generated temporary variables.
      
      For x86-64, using the Polyhedron benchmark suite, no performance or
      code size difference worth mentioning was observed.
      
      Regtested on x86_64-pc-linux-gnu.
      
      gcc/fortran/ChangeLog:
      
      2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR 82869
      	* convert.c (truthvalue_conversion): Use logical_type_node.
      	* trans-array.c (gfc_trans_allocate_array_storage): Likewise.
      	(gfc_trans_create_temp_array): Likewise.
      	(gfc_trans_array_ctor_element): Likewise.
      	(gfc_trans_array_constructor_value): Likewise.
      	(trans_array_constructor): Likewise.
      	(trans_array_bound_check): Likewise.
      	(gfc_conv_array_ref): Likewise.
      	(gfc_trans_scalarized_loop_end): Likewise.
      	(gfc_conv_array_extent_dim): Likewise.
      	(gfc_array_init_size): Likewise.
      	(gfc_array_allocate): Likewise.
      	(gfc_trans_array_bounds): Likewise.
      	(gfc_trans_dummy_array_bias): Likewise.
      	(gfc_conv_array_parameter): Likewise.
      	(duplicate_allocatable): Likewise.
      	(duplicate_allocatable_coarray): Likewise.
      	(structure_alloc_comps): Likewise
      	(get_std_lbound): Likewise
      	(gfc_alloc_allocatable_for_assignment): Likewise
      	* trans-decl.c (add_argument_checking): Likewise
      	(gfc_generate_function_code): Likewise
      	* trans-expr.c (gfc_copy_class_to_class): Likewise
      	(gfc_trans_class_array_init_assign): Likewise
      	(gfc_trans_class_init_assign): Likewise
      	(gfc_conv_expr_present): Likewise
      	(gfc_conv_substring): Likewise
      	(gfc_conv_cst_int_power): Likewise
      	(gfc_conv_expr_op): Likewise
      	(gfc_conv_procedure_call): Likewise
      	(fill_with_spaces): Likewise
      	(gfc_trans_string_copy): Likewise
      	(gfc_trans_alloc_subarray_assign): Likewise
      	(gfc_trans_pointer_assignment): Likewise
      	(gfc_trans_scalar_assign): Likewise
      	(fcncall_realloc_result): Likewise
      	(alloc_scalar_allocatable_for_assignment): Likewise
      	(trans_class_assignment): Likewise
      	(gfc_trans_assignment_1): Likewise
      	* trans-intrinsic.c (build_fixbound_expr): Likewise
      	(gfc_conv_intrinsic_aint): Likewise
      	(gfc_trans_same_strlen_check): Likewise
      	(conv_caf_send): Likewise
      	(trans_this_image): Likewise
      	(conv_intrinsic_image_status): Likewise
      	(trans_image_index): Likewise
      	(gfc_conv_intrinsic_bound): Likewise
      	(conv_intrinsic_cobound): Likewise
      	(gfc_conv_intrinsic_mod): Likewise
      	(gfc_conv_intrinsic_dshift): Likewise
      	(gfc_conv_intrinsic_dim): Likewise
      	(gfc_conv_intrinsic_sign): Likewise
      	(gfc_conv_intrinsic_ctime): Likewise
      	(gfc_conv_intrinsic_fdate): Likewise
      	(gfc_conv_intrinsic_ttynam): Likewise
      	(gfc_conv_intrinsic_minmax): Likewise
      	(gfc_conv_intrinsic_minmax_char): Likewise
      	(gfc_conv_intrinsic_anyall): Likewise
      	(gfc_conv_intrinsic_arith): Likewise
      	(gfc_conv_intrinsic_minmaxloc): Likewise
      	(gfc_conv_intrinsic_minmaxval): Likewise
      	(gfc_conv_intrinsic_btest): Likewise
      	(gfc_conv_intrinsic_bitcomp): Likewise
      	(gfc_conv_intrinsic_shift): Likewise
      	(gfc_conv_intrinsic_ishft): Likewise
      	(gfc_conv_intrinsic_ishftc): Likewise
      	(gfc_conv_intrinsic_leadz): Likewise
      	(gfc_conv_intrinsic_trailz): Likewise
      	(gfc_conv_intrinsic_mask): Likewise
      	(gfc_conv_intrinsic_spacing): Likewise
      	(gfc_conv_intrinsic_rrspacing): Likewise
      	(gfc_conv_intrinsic_size): Likewise
      	(gfc_conv_intrinsic_sizeof): Likewise
      	(gfc_conv_intrinsic_transfer): Likewise
      	(gfc_conv_allocated): Likewise
      	(gfc_conv_associated): Likewise
      	(gfc_conv_same_type_as): Likewise
      	(gfc_conv_intrinsic_trim): Likewise
      	(gfc_conv_intrinsic_repeat): Likewise
      	(conv_isocbinding_function): Likewise
      	(conv_intrinsic_ieee_is_normal): Likewise
      	(conv_intrinsic_ieee_is_negative): Likewise
      	(conv_intrinsic_ieee_copy_sign): Likewise
      	(conv_intrinsic_move_alloc): Likewise
      	* trans-io.c (set_parameter_value_chk): Likewise
      	(set_parameter_value_inquire): Likewise
      	(set_string): Likewise
      	* trans-openmp.c (gfc_walk_alloc_comps): Likewise
      	(gfc_omp_clause_default_ctor): Likewise
      	(gfc_omp_clause_copy_ctor): Likewise
      	(gfc_omp_clause_assign_op): Likewise
      	(gfc_omp_clause_dtor): Likewise
      	(gfc_omp_finish_clause): Likewise
      	(gfc_trans_omp_clauses): Likewise
      	(gfc_trans_omp_do): Likewise
      	* trans-stmt.c (gfc_trans_goto): Likewise
      	(gfc_trans_sync): Likewise
      	(gfc_trans_arithmetic_if): Likewise
      	(gfc_trans_simple_do): Likewise
      	(gfc_trans_do): Likewise
      	(gfc_trans_forall_loop): Likewise
      	(gfc_trans_where_2): Likewise
      	(gfc_trans_allocate): Likewise
      	(gfc_trans_deallocate): Likewise
      	* trans-types.c (gfc_init_types): Initialize logical_type_node and
      	its true/false trees.
      	(gfc_get_array_descr_info): Use logical_type_node.
      	* trans-types.h (logical_type_node): New tree.
      	(logical_true_node): Likewise.
      	(logical_false_node): Likewise.
      	* trans.c (gfc_trans_runtime_check): Use logical_type_node.
      	(gfc_call_malloc): Likewise
      	(gfc_allocate_using_malloc): Likewise
      	(gfc_allocate_allocatable): Likewise
      	(gfc_add_comp_finalizer_call): Likewise
      	(gfc_add_finalizer_call): Likewise
      	(gfc_deallocate_with_status): Likewise
      	(gfc_deallocate_scalar_with_status): Likewise
      	(gfc_call_realloc): Likewise
      
      gcc/testsuite/ChangeLog:
      
      2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR 82869
      	* gfortran.dg/logical_temp_io.f90: New test.
      	* gfortran.dg/logical_temp_io_kind8.f90: New test.
      
      From-SVN: r254526
      Janne Blomqvist committed
    • Fix vrp101.c test-case. · c8ce479d
      2017-11-08  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/tree-ssa/vrp101.c: Update expected pattern as
      	frequencies are not longer printed in dump output.
      
      From-SVN: r254525
      Martin Liska committed
    • Simplify call of gimple_call_internal_p. · 9f6fbcd3
      2017-11-08  Martin Liska  <mliska@suse.cz>
      
      	* gimplify.c (expand_FALLTHROUGH_r): Simplify usage
      	of gimple_call_internal_p.
      
      From-SVN: r254524
      Martin Liska committed
    • * gcc.dg/strlenopt-33g.c: Remove duplicate dg-do command. · 106db840
      From-SVN: r254523
      Eric Botcazou committed
    • Fix -Wreturn-type fallout in g++.old-deja/g++.brendan/asm-extn1.C · 89334d4b
      	* g++.old-deja/g++.brendan/asm-extn1.C: Accept all sparc* targets.
      	(main): Add return type.
      
      From-SVN: r254522
      Rainer Orth committed
    • [mips] Wrap ASM_OUTPUT_LABELREF in do {} while (0) · 66d4b733
      2017-11-07  Tom de Vries  <tom@codesourcery.com>
      
      	* config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".
      
      From-SVN: r254521
      Tom de Vries committed
    • [mips] Remove semicolon after do {} while (0) in ASM_OUTPUT_CASE_END · 65f371e4
      2017-11-07  Tom de Vries  <tom@codesourcery.com>
      
      	* config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
      	"do {} while (0)".
      
      From-SVN: r254520
      Tom de Vries committed
    • Fix fallthrough attribute ignorance w/ -fsanitize=address (PR sanitizer/82792). · 053ee6a7
      2017-11-08  Martin Liska  <mliska@suse.cz>
      
      	PR sanitizer/82792
      	* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
      2017-11-08  Martin Liska  <mliska@suse.cz>
      
      	PR sanitizer/82792
      	* g++.dg/asan/pr82792.C: New test.
      
      From-SVN: r254519
      Martin Liska committed
    • re PR bootstrap/82670 (UBSAN bootstrap broken after recent libsanitizer merge) · 5925290f
      	PR bootstrap/82670
      	* ubsan/Makefile.am (ubsan_files): Remove ubsan_init_standalone.cc
      	and ubsan_signals_standalone.cc.
      	* ubsan/Makefile.in: Regenerated.
      
      From-SVN: r254518
      Jakub Jelinek committed
    • analyze_brprob.py: fix SI units · caba2b36
      2017-11-08  Martin Liska  <mliska@suse.cz>
      
      	* analyze_brprob.py: Fix abbreviations for SI units.
      
      From-SVN: r254517
      Martin Liska committed
    • Daily bump. · 41f1dada
      From-SVN: r254516
      GCC Administrator committed
  2. 07 Nov, 2017 28 commits
    • [PATCH] Install cp/operators.def as part of plugin headers · 5666f12b
      https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00498.html
      2017-11-07 Boris Kolpackov  <boris@codesynthesis.com>
      	* Make-lang.in (CP_PLUGIN_HEADERS): Add operators.def since included
      	in cp-tree.h.
      
      From-SVN: r254512
      Boris Kolpackov committed
    • re PR c++/82835 (ICE on valid code with -fopenmp) · 4dbeb716
      	PR c++/82835
      	* cp-gimplify.c (cxx_omp_clause_apply_fn): For methods pass i - 1 to
      	convert_default_arg instead of i.
      
      	* testsuite/libgomp.c++/pr82835.C: New test.
      
      From-SVN: r254511
      Jakub Jelinek committed
    • re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest) · acd37779
      	PR target/82855
      	* config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
      	(*cmp<mode>_ccz_1): New insn with $k alternative.
      
      	* gcc.target/i386/avx512dq-pr82855.c: New test.
      
      From-SVN: r254510
      Jakub Jelinek committed
    • re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest) · 682d3a40
      	PR target/82855
      	* config/i386/i386.c (ix86_swap_binary_operands_p): Treat
      	RTX_COMM_COMPARE as commutative as well.
      	(ix86_binary_operator_ok): Formatting fix.
      	* config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
      	*<code><mode>3<mask_name><round_saeonly_name>,
      	*<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
      	*<s>mul<mode>3_highpart<mask_name>,
      	*vec_widen_umult_even_v16si<mask_name>,
      	*vec_widen_umult_even_v8si<mask_name>,
      	*vec_widen_umult_even_v4si<mask_name>,
      	*vec_widen_smult_even_v16si<mask_name>,
      	*vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
      	*avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
      	*avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
      	*sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
      	*sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
      	<avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
      	*sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
      	*<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
      	*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
      	!(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
      	ix86_binary_operator_ok.  Formatting fixes.
      	(*<plusminus_insn><mode>3<mask_name><round_name>,
      	*<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
      	fixes.
      
      From-SVN: r254509
      Jakub Jelinek committed
    • rs6000: Use isel for the cstore patterns · b15ef5d3
      We currently generate (sometimes pretty long) sequences of integer
      insns to implement the various cstore patterns.  If the CPU has a fast
      isel, we can use that at the same latency as of just two integer insns
      (you also get a load immediate of 1, and sometimes one of 0 as well,
      but those are not in the critical path: they don't depend on any other
      instruction).
      
      There are a few patterns that already are implemented with just two
      instructions; so don't use isel in that case (I still need to check
      all lt/gt/ltu/gtu/le/leu/ge/geu patterns with all SI/DI combinations,
      one or two might be better without isel).
      
      This introduces a new GPR2 mode iterator, for those patterns that use
      two independent integer modes.
      
      
      	* config/rs6000/rs6000.md (GPR2): New mode_iterator.
      	("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
      	eq and ne if TARGET_ISEL.
      	(cmp): New code_iterator.
      	(UNS, UNSU_, UNSIK): New code_attrs.
      	(<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
      	("eq<mode>3"): New define_expand, rename the define_insn_and_split
      	to...
      	("eq<mode>3"): ... this.
      	("ne<mode>3"): New define_expand, rename the define_insn_and_split
      	to...
      	("ne<mode>3"): ... this.
      
      From-SVN: r254508
      Segher Boessenkool committed
    • Fix SSE bits dependencies. · d4bc3829
      gcc/
      	PR target/82812
      	* common/config/i386/i386-common.c
      	(OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
      	(ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
      	* config/i386/i386.opt: Ditto.
      	* config/i386/i386.c (ix86_target_string): Ditto.
      	(ix86_option_override_internal): Ditto.
      	(ix86_init_mpx_builtins): Move MPX to args2.
      	(ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
      	* config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
      	__builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
      	__builtin_ia32_vgf2p8affineinvqb_v32qi,
      	__builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
      	__builtin_ia32_vgf2p8affineinvqb_v16qi,
      	__builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.
      
      From-SVN: r254507
      Julia Koval committed
    • Check for S_ISSOCK before use · d8dcc3a6
      	* src/filesystem/ops-common.h (make_file_type) [S_ISSOCK]: Only use
      	S_ISSOCK when defined.
      
      From-SVN: r254506
      Jonathan Wakely committed
    • re PR target/80425 (Extra inter-unit register move with zero-extension) · fa97b067
      	PR target/80425
      	* config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
      	and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
      	(zero-extendsidi peephole2): Remove peephole.
      
      testsuite/ChangeLog:
      
      	PR target/80425
      	* gcc.target/i386/pr80425-3.c: New test.
      
      From-SVN: r254505
      Uros Bizjak committed
    • compiler: don't double count "." in nested_function_num · 8b36a250
          
          Nested functions are named "outerfunc.$nestedN", where N is a
          number. nested_function_num extracts that number. The name is
          first passed to unpack_hidden_name, which handles the "." and
          should result "$nestedN". Don't expect the "." again.
          
          This fixes assertion failure when escape analysis is enabled
          and -fgo-debug-escape is on. The failure looks
          
          go1: internal compiler error: in nested_function_num, at go/gofrontend/names.cc:241
          0x7bd7d3 Gogo::nested_function_num(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
          
          Reviewed-on: https://go-review.googlesource.com/76213
      
      From-SVN: r254504
      Ian Lance Taylor committed
    • re PR c/53037 (warn_if_not_aligned(X)) · 02d7065f
      	PR c/53037
      	* stor-layout.c: Include attribs.h.
      	(handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
      	explicit lookup of "aligned" attribute.
      
      From-SVN: r254503
      Eric Botcazou committed
    • * g++.dg/pr50763-3.C (evalPoint): Return a value. · 15ad44e7
      From-SVN: r254502
      Andreas Schwab committed
    • RISC-V: Implement movmemsi · 6ed01e6b
      Without this we aren't getting proper memcpy inlining on RISC-V systems,
      which is particularly disastrous for Dhrystone performance on RV32IM
      systems.
      
      gcc/ChangeLog
      
      2017-11-07  Andrew Waterman  <andrew@sifive.com>
      
              * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New
              prototype.
              (riscv_expand_block_move): Likewise.
              gcc/config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
              implementation.
              (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
              (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
              gcc/config/riscv/riscv.c (riscv_block_move_straight): New
              function.
              (riscv_adjust_block_mem): Likewise.
              (riscv_block_move_loop): Likewise.
              (riscv_expand_block_move): Likewise.
              gcc/config/riscv/riscv.md (movmemsi): New pattern.
      
      From-SVN: r254501
      Andrew Waterman committed
    • RISC-V: Define MUSL_DYNAMIC_LINKER · 4d30a85e
      Use no suffix at all in the musl dynamic linker name for hard
      float ABI. Use -sf and -sp suffixes in musl dynamic linker name
      for soft float and single precision ABIs. The following table
      outlines the musl interpreter names for the RISC-V ABI names.
      
      musl interpreter        | RISC-V ABI
      ----------------------- | -------------
      ld-musl-riscv32.so.1    | riscv32-ilp32d
      ld-musl-riscv64.so.1    | riscv64-lp64d
      ld-musl-riscv32-sf.so.1 | riscv32-ilp32
      ld-musl-riscv64-sf.so.1 | riscv64-lp64
      ld-musl-riscv32-sp.so.1 | riscv32-ilp32f
      ld-musl-riscv64-sp.so.1 | riscv64-lp64f
      
      gcc/ChangeLog
      
      2017-11-06  Michael Clark  <michaeljclark@mac.com>
      
              * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
              (MUSL_DYNAMIC_LINKER): Likewise.
      
      From-SVN: r254500
      Michael Clark committed
    • [AArch64] Use aarch64_reg_or_imm instead of nonmemory_operand · f32c3adb
      Some of the shift expanders accepted nonmemory_operands but were only
      able to handle register_operands or CONST_INTs.  This is probably
      academic without SVE, since we're not likely to see shifts by other
      types of constant (const_wide_ints, consts, etc).  But for SVE,
      it's possible for a vectorised shift induction to have a CONST_POLY_INT
      shift amount.
      
      This patch makes the expanders use aarch64_reg_or_imm instead.
      
      2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
      	(rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
      	nonmmory_operand.
      
      From-SVN: r254499
      Richard Sandiford committed
    • match.pd: Fix build. · 56ccfbd6
      2017-11-07  Richard Biener  <rguenther@suse.de>
      
      	* match.pd: Fix build.
      
      From-SVN: r254498
      Richard Biener committed
    • PR71026: Canonicalize negates in division · 6a435314
      Canonicalize x / (- y) into (-x) / y.
      
      This moves negates out of the RHS of a division in order to
      allow further simplifications and potentially more reciprocal CSEs.
      
      2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
      	    Jackson Woodruff  <jackson.woodruff@arm.com>
      
          gcc/
      	PR tree-optimization/71026
      	* match.pd: Canonicalize negate in division.
      
          testsuite/
      	PR 71026/tree-optimization/71026
      	* gcc.dg/div_neg: New test.
      
      From-SVN: r254497
      Wilco Dijkstra committed
    • PR80131: Simplification of 1U << (31 - x) · 4349b15f
      Currently the code A << (B - C) is not simplified.
      However at least a more specific case of 1U << (C -x) where
      C = precision(type) - 1 can be simplified to (1 << C) >> x.
      
      This is done by adding a new simplification rule in match.pd.
      
      2017-11-07  Sudakshina Das  <sudi.das@arm.com>
      
          gcc/
      	PR middle-end/80131
      	* match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.
      
          testsuite/
      	PR middle-end/80131
      	* testsuite/gcc.dg/pr80131-1.c: New Test.
      
      From-SVN: r254496
      Sudakshina Das committed
    • More bitop simplifications in match.pd · e268a77b
      2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
      	(a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/bitops-1.c: New file.
      
      From-SVN: r254495
      Marc Glisse committed
    • More fold_negate in match.pd · 81bd903a
      gcc/ChangeLog:
      
      2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
      
      	* fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
      	non-scalar integral types.
      	* match.pd (negate_expr_p): Handle MINUS_EXPR.
      	(-(A-B), -(~A)): New transformations.
      
      gcc/testsuite/ChangeLog:
      
      2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
      
      	* gcc.dg/tree-ssa/negminus.c: New test.
      
      From-SVN: r254494
      Marc Glisse committed
    • [powerpcspe] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS · 13792cce
      2017-11-07  Tom de Vries  <tom@codesourcery.com>
      
      	* config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
      	semicolon after "do {} while (0)".
      	* config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      
      From-SVN: r254493
      Tom de Vries committed
    • [rs6000] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS · e73d717b
      2017-11-07  Tom de Vries  <tom@codesourcery.com>
      
      	* config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
      	after "do {} while (0)".
      	* config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      	* config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
      
      From-SVN: r254492
      Tom de Vries committed
    • [libgcc, rs6000] Remove semicolon after do {} while (0) in REGISTER_CFA_OFFSET_FOR · 65f480c7
      2017-11-07  Tom de Vries  <tom@codesourcery.com>
      
      	* config/rs6000/aix-unwind.h (REGISTER_CFA_OFFSET_FOR): Remove semicolon
      	after "do {} while (0)".
      
      From-SVN: r254491
      Tom de Vries committed
    • [arm] Remove semicolon after while {} do (0) in HANDLE_NARROW_SHIFT_ARITH · aac11893
      2017-11-07  Tom de Vries  <tom@codesourcery.com>
      
      	PR other/82784
      	* config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
      	"while {} do (0)".
      	(arm_rtx_costs_internal): Add missing semicolon after
      	HANDLE_NARROW_SHIFT_ARITH call.
      
      From-SVN: r254490
      Tom de Vries committed
    • [libgcc] Remove semicolon after do {} while (0) in FP_HANDLE_EXCEPTIONS · 2a321acb
      2017-11-07  Tom de Vries  <tom@codesourcery.com>
      
      	PR other/82784
      	* config/aarch64/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Remove
      	semicolon after "do {} while (0)".
      	* config/i386/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
      	* config/ia64/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
      	* config/mips/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
      	* config/rs6000/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
      
      From-SVN: r254489
      Tom de Vries committed
    • P0704R1 - fixing const-qualified pointers to members · 96d155c6
      	* typeck2.c (build_m_component_ref): Also accept in lower stds with
      	a pedwarn.
      
      From-SVN: r254487
      Jason Merrill committed
    • Require ngettext in test of system gettext implementation · 2d041117
      gcc currently uses ngettext in a number of places (gcc/cp/pt.c,
      gcc/diagnostic.c, gcc/collect2.c).  Apparently there are (or used to
      be) gettext implementations that lack ngettext.  See config/gettext.m4.
      
      This patch arranges for intl/ to be compiled when the system gettext
      lacks ngettext.
      
      	* configure.ac: Invoke AM_GNU_GETTEXT with need_ngettext.
      	* configure: Regenerate.
      
      From-SVN: r254486
      Alan Modra committed
    • rs6000: Don't clear TARGET_ISEL implicitly · 0ed1b489
      We want to actually use isel, so we shouldn't disable it.  It is
      already not set by default on CPUs that don't have it, or where we
      do not want to use it.
      
      
      	* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
      	disable isel if it was not set explicitly.
      
      From-SVN: r254485
      Segher Boessenkool committed