1. 08 Nov, 2017 13 commits
    • sem_util.adb (Subprogram_Name): Append suffix for overloaded subprograms. · 879e92d0
      2017-11-08  Arnaud Charlet  <charlet@adacore.com>
      
      	* sem_util.adb (Subprogram_Name): Append suffix for overloaded
      	subprograms.
      
      From-SVN: r254529
      Arnaud Charlet committed
    • [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 27 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