platform/upstream/gcc.git
6 years agocrti-hw.S: Add watchdog vector, FT930 IRQ support.
James Bowman [Fri, 29 Sep 2017 01:01:52 +0000 (01:01 +0000)]
crti-hw.S: Add watchdog vector, FT930 IRQ support.

libgcc/
* config/ft32/crti-hw.S: Add watchdog vector, FT930
IRQ support.

From-SVN: r253276

6 years agore PR other/67165 (please enable libbacktrace to work with compressed debug sections)
Ian Lance Taylor [Fri, 29 Sep 2017 00:30:35 +0000 (00:30 +0000)]
re PR other/67165 (please enable libbacktrace to work with compressed debug sections)

PR other/67165
* elf.c (__builtin_prefetch): Define if not __GNUC__.
(unlikely): Define.
(SHF_UNCOMPRESSED, ELFCOMPRESS_ZLIB): Define.
(b_elf_chdr): Define type.
(enum debug_section): Add ZDEBUG_xxx values.
(debug_section_names): Add names for new sections.
(struct debug_section_info): Add compressed field.
(elf_zlib_failed, elf_zlib_fetch): New static functions.
(HUFFMAN_TABLE_SIZE, HUFFMAN_VALUE_MASK): Define.
(HUFFMAN_BITS_SHIFT, HUFFMAN_BITS_MASK): Define.
(HUFFMAN_SECONDARY_SHIFT): Define.
(ZDEBUG_TABLE_SIZE): Define.
(ZDEBUG_TABLE_CODELEN_OFFSET, ZDEBUG_TABLE_WORK_OFFSET): Define.
(final_next_secondary): New static variable if
BACKTRACE_GENERATE_FIXED_HUFFMAN_TABLE.
(elf_zlib_inflate_table): New static function.
(BACKTRACE_GENERATE_FIXED_HUFFMAN_TABLE): If define, define main
function to produce fixed Huffman table.
(elf_zlib_default_table): New static variable.
(elf_zlib_inflate): New static function.
(elf_zlib_verify_checksum): Likewise.
(elf_zlib_inflate_and_verify): Likewise.
(elf_uncompress_zdebug): Likewise.
(elf_uncompress_chdr): Likewise.
(backtrace_uncompress_zdebug): New extern function.
(elf_add): Look for .zdebug sections and SHF_COMPRESSED debug
sections, and uncompress them.
* internal.h (backtrace_compress_zdebug): Declare.
* ztest.c: New file.
* configure.ac: Check for -lz and check whether the linker
supports --compress-debug-sections.
* Makefile.am (ztest_SOURCES): New variable.
(ztest_CFLAGS, ztest_LDADD): New variables.
(check_PROGRAMS): Add ztest.
(ctestg_SOURCES): New variable.
(ctestg_CFLAGS, ctestg_LDFLAGS, ctestg_LDADD): New variables.
(ctesta_SOURCES): New variable.
(ctesta_CFLAGS, ctesta_LDFLAGS, ctesta_LDADD): New variables.
(check_PROGRAMS): Add ctestg and ctesta.
* configure, config.h.in, Makefile.in: Rebuild.

From-SVN: r253275

6 years agoDaily bump.
GCC Administrator [Fri, 29 Sep 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253274

6 years agore PR c++/79488 (ICE from lambda that has invalid return type)
Paolo Carlini [Thu, 28 Sep 2017 21:18:36 +0000 (21:18 +0000)]
re PR c++/79488 (ICE from lambda that has invalid return type)

2017-09-28  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/79488
* g++.dg/cpp0x/lambda/lambda-ice22.C: New.

From-SVN: r253270

6 years agoPR c++/56973, DR 696 - capture constant variables only as needed.
Jason Merrill [Thu, 28 Sep 2017 19:39:45 +0000 (15:39 -0400)]
PR c++/56973, DR 696 - capture constant variables only as needed.

* expr.c (mark_use): Split out from mark_rvalue_use and
mark_lvalue_use.  Handle lambda capture of constant variables.
(mark_lvalue_use_nonread): New.
* semantics.c (process_outer_var_ref): Don't capture a constant
variable until forced.
* pt.c (processing_nonlambda_template): New.
* call.c (build_this): Check it.
* decl2.c (grok_array_decl): Call mark_rvalue_use and
mark_lvalue_use_nonread.
* init.c (constant_value_1): Don't call mark_rvalue_use.
* typeck.c (build_static_cast): Handle lambda capture.

From-SVN: r253266

6 years agoUse local_specializations to find capture proxies.
Jason Merrill [Thu, 28 Sep 2017 19:39:38 +0000 (15:39 -0400)]
Use local_specializations to find capture proxies.

* cp-tree.h (DECL_CAPTURED_VARIABLE): New.
* lambda.c (build_capture_proxy): Set it.
(add_capture): Pass initializer to build_capture_proxy.
(start_lambda_function): Likewise.
(insert_capture_proxy): Use register_local_specialization.
(is_lambda_ignored_entity): Always ignore proxies.
* name-lookup.c (qualify_lookup): Don't check
is_lambda_ignored_entity if LOOKUP_HIDDEN is set.
* semantics.c (process_outer_var_ref): Use
retrieve_local_specialization.
* parser.c (cp_parser_lambda_body): Push local_specializations.
* pt.c (tsubst_expr): Pass LOOKUP_HIDDEN when looking for a proxy.
(tsubst_lambda_expr): Push local_specializations sooner.
(tsubst_copy_and_build): Don't register_local_specialization.

From-SVN: r253265

6 years agoSmall lambda fixes.
Jason Merrill [Thu, 28 Sep 2017 19:39:32 +0000 (15:39 -0400)]
Small lambda fixes.

* call.c (build_special_member_call): Use the return value of
mark_lvalue_use.
* decl.c (compute_array_index_type): Likewise.
* parser.c (cp_parser_oacc_wait_list): Likewise.
* lambda.c (is_normal_capture_proxy): Handle *this capture.
(add_capture): Clarify internal_error message.

From-SVN: r253264

6 years agoUse -Wno-deprecated for std::uncaught_exception tests.
Jason Merrill [Thu, 28 Sep 2017 18:36:58 +0000 (14:36 -0400)]
Use -Wno-deprecated for std::uncaught_exception tests.

* g++.dg/eh/uncaught1.C: Pass -Wno-deprecated.
* g++.dg/eh/uncaught2.C: Pass -Wno-deprecated.
* g++.dg/eh/uncaught4.C: Pass -Wno-deprecated.
* g++.old-deja/g++.mike/eh48.C: Pass -Wno-deprecated.

From-SVN: r253262

6 years agore PR target/82342 (i386/pr82260-2.c fail)
Jakub Jelinek [Thu, 28 Sep 2017 18:35:58 +0000 (20:35 +0200)]
re PR target/82342 (i386/pr82260-2.c fail)

PR target/82342
* gcc.target/i386/pr82260-1.c: Add -mno-bmi2 to dg-options.
* gcc.target/i386/pr82260-2.c: Likewise.

From-SVN: r253261

6 years agoi386.c (ix86_print_operand_address_as): Do not check index when encoding %esp as...
Uros Bizjak [Thu, 28 Sep 2017 18:14:27 +0000 (20:14 +0200)]
i386.c (ix86_print_operand_address_as): Do not check index when encoding %esp as %rsp to avoid 0x67 prefix.

* config/i386/i386.c (ix86_print_operand_address_as): Do not check
index when encoding %esp as %rsp to avoid 0x67 prefix.

From-SVN: r253260

6 years agoi386.md (*movsf_internal, [...]): Return 256-bit AVX modes for TARGET_PREFER_AVX256.
Sergey Shalnov [Thu, 28 Sep 2017 18:11:41 +0000 (20:11 +0200)]
i386.md (*movsf_internal, [...]): Return 256-bit AVX modes for TARGET_PREFER_AVX256.

gcc/
        * config/i386/i386.md (*movsf_internal, *movdf_internal):
        Return 256-bit AVX modes for TARGET_PREFER_AVX256.

gcc/testsuite/
        * gcc.target/i386/avx512f-constant-float-return.c: New test.

From-SVN: r253259

6 years ago[ARM] Some tests require arm_neon_hw
Christophe Lyon [Thu, 28 Sep 2017 18:00:42 +0000 (18:00 +0000)]
[ARM] Some tests require arm_neon_hw

2017-09-28  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.target/arm/aapcs/align4.c: Require arm_neon_hw effective target.
* gcc.target/arm/aapcs/align_rec4.c: Likewise.
* gcc.target/arm/aapcs/neon-vect1.c: Likewise.
* gcc.target/arm/aapcs/neon-vect2.c: Likewise.
* gcc.target/arm/aapcs/neon-vect3.c: Likewise.
* gcc.target/arm/aapcs/neon-vect4.c: Likewise.
* gcc.target/arm/aapcs/neon-vect5.c: Likewise.
* gcc.target/arm/aapcs/neon-vect6.c: Likewise.
* gcc.target/arm/aapcs/neon-vect7.c: Likewise.
* gcc.target/arm/aapcs/neon-vect8.c: Likewise.

From-SVN: r253258

6 years agojit: document function pointers
David Malcolm [Thu, 28 Sep 2017 17:12:19 +0000 (17:12 +0000)]
jit: document function pointers

gcc/jit/ChangeLog:
* docs/topics/expressions.rst (Function calls): Add link to
gcc_jit_context_new_function_ptr_type.
(Function pointers): Convert to cross-references to
function-pointers.rst, moving material there.
* docs/topics/function-pointers.rst: New page.
* docs/topics/index.rst: Add function-pointers.rst.
* docs/topics/types.rst (Function pointer types): New section.
* docs/_build/texinfo/libgccjit.texi: Regenerate.

From-SVN: r253257

6 years ago[ARM] Remove ARMv8-M code for D17-D31
Thomas Preud'homme [Thu, 28 Sep 2017 16:13:01 +0000 (16:13 +0000)]
[ARM] Remove ARMv8-M code for D17-D31

Function cmse_nonsecure_entry_clear_before_return has code to deal with
high VFP register (D16-D31) while ARMv8-M Baseline and Mainline both do
not support more than 16 double VFP registers (D0-D15). This makes this
security-sensitive code harder to read for not much benefit since
libcall for cmse_nonsecure_call functions do not deal with those high
VFP registers anyway.

This commit gets rid of this code for simplicity and fixes 2 issues in
the same function:

- stop the first loop when reaching maxregno to avoid dealing with VFP
  registers if targetting Thumb-1 or using -mfloat-abi=soft
- include maxregno in that loop

2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security
    Extensions with more than 16 double VFP registers.
    (cmse_nonsecure_entry_clear_before_return): Remove second entry of
    to_clear_mask and all code related to it.  Replace the remaining
    entry by a sbitmap and adapt code accordingly.

From-SVN: r253256

6 years agojit: handle equality of function pointer types
David Malcolm [Thu, 28 Sep 2017 16:00:57 +0000 (16:00 +0000)]
jit: handle equality of function pointer types

gcc/jit/ChangeLog:
* jit-recording.c
(gcc::jit::recording::function_type::is_same_type_as): New function.
* jit-recording.h: In namespace gcc::jit::recording::
(type::accepts_writes_from): Use is_same_type_as rather than pointer
equality.
(type::is_same_type_as): New virtual function.
(function_type::is_same_type_as): New override.

gcc/testsuite/ChangeLog:
* jit.dg/test-error-mismatching-types-in-assignment-fn-ptr.c: New
test case.
* jit.dg/test-returning-function-ptr.c (create_code): Update to
create a function pointer type independently of the call to
gcc_jit_function_get_address, and assign the pointer to a local
before returning it, to exercise the function pointer type
comparison code.

From-SVN: r253255

6 years ago[BRIGFE] Changed pure attributes to const for the brig-builtins
Henry Linjamäki [Thu, 28 Sep 2017 15:29:07 +0000 (15:29 +0000)]
[BRIGFE] Changed pure attributes to const for the brig-builtins
that are actually const.

Also:
* Fixed brig-lang.c such that the builtin attributes actually
  have effect...
* Made -O3 the default optimization level for BRIG.

From-SVN: r253254

6 years agoEnable ifunc attribute by default for SPARC GNU/Linux.
Joseph Myers [Thu, 28 Sep 2017 14:25:15 +0000 (15:25 +0100)]
Enable ifunc attribute by default for SPARC GNU/Linux.

Similar to other architectures with IFUNC binutils/glibc support, this
patch enables the ifunc attribute for SPARC GNU/Linux.  This is needed
for building glibc with the current checks on IFUNC resolver types
(and use of the attribute in glibc rather than manually created IFUNCs
is beneficial anyway because it results in better debug info).

Tested compilation of glibc with build-many-glibcs.py.  I have not run
the GCC tests for SPARC.

* config.gcc (default_gnu_indirect_function): Default to yes for
sparc*-*-linux* with glibc.

From-SVN: r253253

6 years agoAvoid assembler warnings from AArch64 constructor/destructor priorities.
Joseph Myers [Thu, 28 Sep 2017 13:08:28 +0000 (14:08 +0100)]
Avoid assembler warnings from AArch64 constructor/destructor priorities.

Many GCC tests fail for AArch64 with current binutils because of
assembler warnings of the form "Warning: ignoring incorrect section
type for .init_array.00100".  The same issue was fixed for ARM in
r247015 by using SECTION_NOTYPE when creating those sections; this
patch applies the same fix to AArch64.

Tested with no regressions with cross to aarch64-linux-gnu.

* config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
(aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
when creating .init_array and .fini_array sections with priority
specified.

From-SVN: r253252

6 years agoCommit forgotten testecase for pr71727.
Christophe Lyon [Thu, 28 Sep 2017 12:59:44 +0000 (14:59 +0200)]
Commit forgotten testecase for pr71727.

From-SVN: r253251

6 years agoRemove superfluous -fopenmp from libgomp testcases
Tom de Vries [Thu, 28 Sep 2017 09:32:00 +0000 (09:32 +0000)]
Remove superfluous -fopenmp from libgomp testcases

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
2017-09-28  Tom de Vries  <tom@codesourcery.com>

* testsuite/libgomp.c++/for-12.C: Remove superfluous -fopenmp option
setting.
* testsuite/libgomp.c++/pr69393.C: Same.
* testsuite/libgomp.c++/taskloop-1.C: Same.
* testsuite/libgomp.c++/taskloop-3.C: Same.
* testsuite/libgomp.c++/taskloop-4.C: Same.
* testsuite/libgomp.c/for-4.c: Same.
* testsuite/libgomp.c/pr66199-3.c: Same.
* testsuite/libgomp.c/pr66199-4.c: Same.
* testsuite/libgomp.c/pr66199-6.c: Same.
* testsuite/libgomp.c/taskloop-1.c: Same.
* testsuite/libgomp.c/taskloop-3.c: Same.
* testsuite/libgomp.c/taskloop-4.c: Same.
* testsuite/libgomp.fortran/aligned1.f03: Same.
* testsuite/libgomp.fortran/condinc1.f: Same.
* testsuite/libgomp.fortran/condinc3.f90: Same.
* testsuite/libgomp.fortran/crayptr1.f90: Same.
* testsuite/libgomp.fortran/crayptr2.f90: Same.
* testsuite/libgomp.fortran/crayptr3.f90: Same.
* testsuite/libgomp.fortran/omp_cond1.f: Same.
* testsuite/libgomp.fortran/omp_cond3.F90: Same.
* testsuite/libgomp.fortran/pr66199-1.f90: Same.
* testsuite/libgomp.fortran/pr66199-2.f90: Same.
* testsuite/libgomp.fortran/recursion1.f90: Same.
* testsuite/libgomp.fortran/target2.f90: Same.
* testsuite/libgomp.fortran/target5.f90: Same.
* testsuite/libgomp.fortran/task3.f90: Same.

From-SVN: r253250

6 years agoFix libgomp.oacc-c-c++-common/loop-g-{1,2}.c for non-nvidia devices
Tom de Vries [Thu, 28 Sep 2017 06:35:23 +0000 (06:35 +0000)]
Fix libgomp.oacc-c-c++-common/loop-g-{1,2}.c for non-nvidia devices

2017-09-28  Tom de Vries  <tom@codesourcery.com>

* testsuite/libgomp.oacc-c-c++-common/loop-g-1.c (main): Remove
vector_length(32) clause from acc parallel directive.
* testsuite/libgomp.oacc-c-c++-common/loop-g-2.c (main): Same.

From-SVN: r253249

6 years agoDaily bump.
GCC Administrator [Thu, 28 Sep 2017 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253248

6 years agojit: implement gcc_jit_function_get_address
David Malcolm [Wed, 27 Sep 2017 23:57:35 +0000 (23:57 +0000)]
jit: implement gcc_jit_function_get_address

gcc/jit/ChangeLog:
* docs/cp/topics/expressions.rst (Function pointers): New section.
* docs/topics/compatibility.rst (LIBGCCJIT_ABI_9): New tag.
* docs/topics/expressions.rst (Function pointers): New section.
* docs/_build/texinfo/libgccjit.texi: Regenerate.
* jit-common.h (class gcc::jit::recording::function_pointer): New
forward decl.
* jit-playback.c (gcc::jit::playback::function::get_address): New
method.
* jit-playback.h (gcc::jit::playback::function::get_address): New
method decl.
* jit-recording.c: Within namespace gcc::jit::recording...
(function::function): Initialize new field "m_fn_ptr_type".
(function::get_address): New method.
(function_pointer::replay_into): New method.
(function_pointer::visit_children): New method.
(function_pointer::make_debug_string): New method.
(function_pointer::write_reproducer): New method.
* jit-recording.h: Within namespace gcc::jit::recording...
(function::get_address): New method.
(function): Add field "m_fn_ptr_type".
(class function_pointer): New subclass of rvalue.
* libgccjit++.h (gccjit::function::get_address): New method.
* libgccjit.c (gcc_jit_function_get_address): New function.
* libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_function_get_address): New
macro.
(gcc_jit_function_get_address): New API entrypoint.
* libgccjit.map (LIBGCCJIT_ABI_9): New tag.

gcc/testsuite/ChangeLog:
* jit.dg/all-non-failing-tests.h: Add
test-returning-function-ptr.c.
* jit.dg/test-returning-function-ptr.c: New test case.

From-SVN: r253244

6 years ago[AArch64] PR71727 fix -mstrict-align
Christophe Lyon [Wed, 27 Sep 2017 23:52:58 +0000 (23:52 +0000)]
[AArch64] PR71727 fix -mstrict-align

2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>

PR target/71727
gcc/
* config/aarch64/aarch64.c
(aarch64_builtin_support_vector_misalignment): Always return false
when misalignment is unknown.

gcc/testsuite/
* gcc.target/aarch64/pr71727-2.c: New test

From-SVN: r253242

6 years agors6000-p8swap.c (const_load_sequence_p): Revise this function to return false if...
Kelvin Nilsen [Wed, 27 Sep 2017 23:43:26 +0000 (23:43 +0000)]
rs6000-p8swap.c (const_load_sequence_p): Revise this function to return false if the definition used by the swap...

gcc/ChangeLog:

2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise
this function to return false if the definition used by the swap
instruction is artificial, or if the memory address from which the
constant value is loaded is not represented by a base address held
in a register or if the base address register is a frame or stack
pointer.  Additionally, return false if the base address of the
loaded constant is a SYMBOL_REF but is not considered to be a
constant.
(replace_swapped_load_constant): New function.
(rs6000_analyze_swaps): Add a new pass to replace a swap of a
loaded constant vector with a load of a swapped constant vector.

gcc/testsuite/ChangeLog:

2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/swaps-p8-28.c: New test.
* gcc.target/powerpc/swaps-p8-29.c: New test.
* gcc.target/powerpc/swaps-p8-30.c: New test.
* gcc.target/powerpc/swaps-p8-31.c: New test.
* gcc.target/powerpc/swaps-p8-32.c: New test.
* gcc.target/powerpc/swaps-p8-33.c: New test.
* gcc.target/powerpc/swaps-p8-34.c: New test.
* gcc.target/powerpc/swaps-p8-35.c: New test.
* gcc.target/powerpc/swaps-p8-36.c: New test.
* gcc.target/powerpc/swaps-p8-37.c: New test.
* gcc.target/powerpc/swaps-p8-38.c: New test.
* gcc.target/powerpc/swaps-p8-39.c: New test.
* gcc.target/powerpc/swaps-p8-40.c: New test.
* gcc.target/powerpc/swaps-p8-41.c: New test.
* gcc.target/powerpc/swaps-p8-42.c: New test.
* gcc.target/powerpc/swaps-p8-43.c: New test.
* gcc.target/powerpc/swaps-p8-44.c: New test.
* gcc.target/powerpc/swaps-p8-45.c: New test.

From-SVN: r253240

6 years agors6000-builtin.def (BU_FP_1MISC_1): Add define macro.
Carl Love [Wed, 27 Sep 2017 22:45:49 +0000 (22:45 +0000)]
rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.

gcc/ChangeLog:

2017-09-27  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
(FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
* config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
fctiw instruction.

gcc/testsuite/ChangeLog:

2017-09-27 Carl Love  <cel@us.ibm.com>
* gcc.target/powerpc/builtin-fctid-fctiw-runnable.c: New test file
for the __builtin_fctid and __builtin_fctiw.

From-SVN: r253238

6 years ago22131.cc: Make test less istreambuf_iterator implementation dependent.
François Dumont [Wed, 27 Sep 2017 20:16:43 +0000 (20:16 +0000)]
22131.cc: Make test less istreambuf_iterator implementation dependent.

2017-09-27  François Dumont  <fdumont@gcc.gnu.org>

* testsuite/22_locale/money_get/get/char/22131.cc: Make test less
istreambuf_iterator implementation dependent.
* testsuite/22_locale/money_get/get/wchar_t/22131.cc: Likewise.

From-SVN: r253237

6 years agocompiler: fix crash on struct that embeds pointer type
Ian Lance Taylor [Wed, 27 Sep 2017 17:46:33 +0000 (17:46 +0000)]
compiler: fix crash on struct that embeds pointer type

    The type verification code that enforces rules about the types of
    embedded struct fields was not properly handling the case where the
    pointed-to type is a pointer type, e.g.

      type s *struct{ C int }
      type t struct{ *s }

    which is illegal according to the spec. Tweak the verifier to catch
    this case, and add a guard in the lowering pass to make sure that we
    don't crash on invalid accesses to field "C" in type "t" above.

    Fixes golang/go#22050

    Reviewed-on: https://go-review.googlesource.com/66530

From-SVN: r253236

6 years agohaifa-sched: fix autopref_rank_for_schedule qsort comparator
Alexander Monakov [Wed, 27 Sep 2017 17:16:53 +0000 (20:16 +0300)]
haifa-sched: fix autopref_rank_for_schedule qsort comparator

* haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns
first, always call autopref_rank_data otherwise.

From-SVN: r253235

6 years ago[BRIGFE] Improved support for function and module scope group
Pekka Jääskeläinen [Wed, 27 Sep 2017 15:40:24 +0000 (15:40 +0000)]
[BRIGFE] Improved support for function and module scope group
segment variables.

PRM specs defines function and module scope group segment variables
as an experimental feature. However, PRM test suite uses and
hcc relies on them. In addition, hcc assumes certain group variable
layout in its dynamic group segment allocation code.

We cannot have global group memory offsets if we want to
both have kernel-specific group segment size and multiple kernels
calling the same functions that use function scope group memory
variables.

Now group segment is handled by separate book keeping of module
scope and function (kernel) offsets. Each function has a "frame"
in the group segment offset to which is given as an argument.

From-SVN: r253233

6 years agographite-scop-detection.c (find_scop_parameters): Move loop bound handling ...
Richard Biener [Wed, 27 Sep 2017 14:35:04 +0000 (14:35 +0000)]
graphite-scop-detection.c (find_scop_parameters): Move loop bound handling ...

2017-09-27  Richard Biener  <rguenther@suse.de>

* graphite-scop-detection.c (find_scop_parameters): Move
loop bound handling ...
(gather_bbs::before_dom_children): ... here, avoiding the need
to build scop_info->loop_nest.
(record_loop_in_sese): Remove.
* sese.h (sese_info_t::loop_nest): Remove.
* sese.c (new_sese_info): Do not allocate loop_nest.
(free_sese_info): Do not free loop_nest.

From-SVN: r253232

6 years agonet: check Getsockname error return
Ian Lance Taylor [Wed, 27 Sep 2017 14:22:36 +0000 (14:22 +0000)]
net: check Getsockname error return

    Reviewed-on: https://go-review.googlesource.com/64550

From-SVN: r253231

6 years agore PR c++/82159 (ICE: in assign_temp, at function.c:961)
Jakub Jelinek [Wed, 27 Sep 2017 14:19:57 +0000 (16:19 +0200)]
re PR c++/82159 (ICE: in assign_temp, at function.c:961)

PR c++/82159
* gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
lhs from calls if the lhs has addressable type.

* g++.dg/opt/pr82159.C: New test.

From-SVN: r253230

6 years agographite.h (scop::max_alias_set): New member.
Richard Biener [Wed, 27 Sep 2017 13:06:34 +0000 (13:06 +0000)]
graphite.h (scop::max_alias_set): New member.

2017-09-27  Richard Biener  <rguenther@suse.de>

* graphite.h (scop::max_alias_set): New member.
* graphite-scop-detection.c: Remove references to non-existing
--param in comments.
(build_alias_sets): Record the maximum alias set used for drs.
(build_scops): Support zero as unlimited for
--param graphite-max-arrays-per-scop.
* graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
and inline into ...
(build_poly_sr_1): ... here.  Compute alias set based on the
maximum alias set used for drs rather than
PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP

From-SVN: r253229

6 years agoFix libgomp.oacc-c-c++-common/parallel-reduction.c for non-nvidia devices
Tom de Vries [Wed, 27 Sep 2017 12:35:54 +0000 (12:35 +0000)]
Fix libgomp.oacc-c-c++-common/parallel-reduction.c for non-nvidia devices

2017-09-27  Tom de Vries  <tom@codesourcery.com>

* testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c (main):
Remove acc_device_nvidia references.

From-SVN: r253228

6 years agographite-optimize-isl.c (get_schedule_for_node_st): Allow --param loop-block-tile...
Richard Biener [Wed, 27 Sep 2017 12:21:40 +0000 (12:21 +0000)]
graphite-optimize-isl.c (get_schedule_for_node_st): Allow --param loop-block-tile-size=0 to disable tiling.

2017-09-27  Richard Biener  <rguenther@suse.de>

* graphite-optimize-isl.c (get_schedule_for_node_st): Allow
--param loop-block-tile-size=0 to disable tiling.

From-SVN: r253227

6 years agoinvoke.texi (graphite-max-bbs-per-function): Remove.
Richard Biener [Wed, 27 Sep 2017 11:09:41 +0000 (11:09 +0000)]
invoke.texi (graphite-max-bbs-per-function): Remove.

2017-09-27  Richard Biener  <rguenther@suse.de>

* doc/invoke.texi (graphite-max-bbs-per-function): Remove.
(graphite-max-nb-scop-params): Document special value zero.
* domwalk.h (dom_walker::STOP): New symbolical constant.
(dom_walker::dom_walker): Add optional parameter for bb to
RPO mapping.
(dom_walker::~dom_walker): Declare.
(dom_walker::before_dom_children): Document STOP return value.
(dom_walker::m_user_bb_to_rpo): New member.
(dom_walker::m_bb_to_rpo): Likewise.
* domwalk.c (dom_walker::dom_walker): Compute bb to RPO
mapping here if not provided by the user.
(dom_walker::~dom_walker): Free bb to RPO mapping if not
provided by the user.
(dom_walker::STOP): Define.
(dom_walker::walk): Do not compute bb to RPO mapping here.
Support STOP return value from before_dom_children to stop
walking.
* graphite-optimize-isl.c (optimize_isl): If the schedule
is the same still generate code if -fgraphite-identity
or -floop-parallelize-all are given.
* graphite-scop-detection.c: Include cfganal.h.
(gather_bbs::gather_bbs): Get and pass through bb to RPO
mapping.
(gather_bbs::before_dom_children): Return STOP for BBs
not in the region.
(build_scops): Compute bb to RPO mapping and pass it to
the domwalk.  Treat --param graphite-max-nb-scop-params=0
as not limiting the number of params.
* graphite.c (graphite_initialize): Remove limit on the
number of basic-blocks in a function.
* params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove.
(PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented
default value of 10.

From-SVN: r253226

6 years agoPlacate gcc.misc-tests/help.exp regarding -Wdo-subscript
Thomas Schwinge [Wed, 27 Sep 2017 08:35:05 +0000 (10:35 +0200)]
Placate gcc.misc-tests/help.exp regarding -Wdo-subscript

gcc/fortran/
* lang.opt <Wdo-subscript>: End help text with a period.

From-SVN: r253225

6 years agopr65947-9.c: Requires char to be signed by default.
Andreas Krebbel [Wed, 27 Sep 2017 06:37:18 +0000 (06:37 +0000)]
pr65947-9.c: Requires char to be signed by default.

Fails on S/390 with char defaulting to unsigned char.

gcc/testsuite/ChangeLog:

2017-09-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.dg/vect/pr65947-9.c: Use signed char explicitly.

From-SVN: r253224

6 years agovsx.md (peephole for optimizing move SF to GPR): Adjust code to eliminate needing...
Michael Meissner [Wed, 27 Sep 2017 01:20:24 +0000 (01:20 +0000)]
vsx.md (peephole for optimizing move SF to GPR): Adjust code to eliminate needing to do the shift right 32-bits operation after...

[gcc]
2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/vsx.md (peephole for optimizing move SF to GPR):
Adjust code to eliminate needing to do the shift right 32-bits
operation after XSCVDPSPN.

[gcc/testsuite]
2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/pr71977-1.c: Update test to know that we
don't generate a 32-bit shift after doing XSCVDPSPN.
* gcc.target/powerpc/direct-move-float1.c: Likewise.
* gcc.target/powerpc/direct-move-float3.c: New test.

From-SVN: r253223

6 years agoDaily bump.
GCC Administrator [Wed, 27 Sep 2017 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253222

6 years agomatch.pd ((X / Y) == 0 -> X < Y): New pattern.
Prathamesh Kulkarni [Wed, 27 Sep 2017 00:03:07 +0000 (00:03 +0000)]
match.pd ((X / Y) == 0 -> X < Y): New pattern.

2017-09-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* match.pd ((X / Y) == 0 -> X < Y): New pattern.
((X / Y) != 0 -> X >= Y): Likewise.

testsuite/
* gcc.dg/tree-ssa/cmpdiv.c: New test.

From-SVN: r253218

6 years agors6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R, [...]): Add support for builtins vector unsigne...
Carl Love [Tue, 26 Sep 2017 21:50:46 +0000 (21:50 +0000)]
rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R, [...]): Add support for builtins vector unsigned char vec_xl_len_r (unsigned char *...

gcc/ChangeLog:

2017-09-26  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R,
P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins
vector unsigned char vec_xl_len_r (unsigned char *, size_t);
void vec_xst_len_r (vector unsigned char, unsigned char *, size_t);
* config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines.
* config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add
definitions and overloading.
* config/rs6000/rs6000.c (altivec_expand_builtin): Add case
statement for P9V_BUILTIN_XST_LEN_R.
(altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL.
* config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add
define_expand and define_insn for the instructions and builtins.
* doc/extend.texi: Update the built-in documentation file for the new
built-in functions.
* config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add
define_insn for the instructions

gcc/testsuite/ChangeLog:

2017-09-26  Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/builtins-5-p9-runnable.c: Add new runable test
file for the new built-ins and the existing built-ins.

From-SVN: r253217

6 years agore PR target/39570 (cabs and cabsf are named differently on NetBSD 5)
Krister Walfridsson [Tue, 26 Sep 2017 21:26:21 +0000 (21:26 +0000)]
re PR target/39570 (cabs and cabsf are named differently on NetBSD 5)

2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>

PR target/39570
* gcc/config/netbsd-protos.h: New file.
* gcc/config/netbsd.c: New file.
* gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
* gcc/config/t-netbsd: New file.
* gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
(tmake_file) Add t-netbsd.
(extra_objs) Add netbsd.o.

From-SVN: r253216

6 years agoCommit ChangeLog entries from previous commit.
Thomas Koenig [Tue, 26 Sep 2017 21:20:56 +0000 (21:20 +0000)]
Commit ChangeLog entries from previous commit.

From-SVN: r253215

6 years agore PR fortran/82143 (add a -fdefault-real-16 flag)
Janus Weil [Tue, 26 Sep 2017 20:28:00 +0000 (22:28 +0200)]
re PR fortran/82143 (add a -fdefault-real-16 flag)

2017-09-26  Janus Weil  <janus@gcc.gnu.org>

PR fortran/82143
PR fortran/82324
* doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.

2017-09-26  Janus Weil  <janus@gcc.gnu.org>

PR fortran/82143
PR fortran/82324
* lib/target-supports.exp (check_effective_target_fortran_real_10): New.
* gfortran.dg/promotion_3.f90: Only run if real(16) is available.
* gfortran.dg/promotion_4.f90: Only run if real(10) is available.
Don't assume that DOUBLE PRECISION has kind=16.

From-SVN: r253214

6 years agovsx.md (vsx_xscvdpspn): Eliminate useless alternative constraint.
Michael Meissner [Tue, 26 Sep 2017 18:50:23 +0000 (18:50 +0000)]
vsx.md (vsx_xscvdpspn): Eliminate useless alternative constraint.

2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/vsx.md (vsx_xscvdpspn): Eliminate useless
alternative constraint.
(vsx_xscvspdpn): Likewise.
(vsx_xscvspdpn_scalar): Likewise.

From-SVN: r253213

6 years agovsx.md (vsx_xscvspdp_scalar2): Move insn so that it is adjacent to the other XSCVSPDP...
Michael Meissner [Tue, 26 Sep 2017 18:45:26 +0000 (18:45 +0000)]
vsx.md (vsx_xscvspdp_scalar2): Move insn so that it is adjacent to the other XSCVSPDP insns.

2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that
it is adjacent to the other XSCVSPDP insns.

From-SVN: r253212

6 years agofrontend-passes.c (do_subscript): Don't do anything if inside an associate list.
Thomas Koenig [Tue, 26 Sep 2017 18:32:16 +0000 (18:32 +0000)]
frontend-passes.c (do_subscript): Don't do anything if inside an associate list.

2017-09-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

* frontend-passes.c (do_subscript): Don't do anything
if inside an associate list.

2017-09-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

* gfortran.dg/gomp/associate1.f90: Remove unnecessary
warning from associate construct and do loop.

From-SVN: r253211

6 years agors6000.md (movsi_from_df): Optimize converting a DFmode to a SFmode...
Michael Meissner [Tue, 26 Sep 2017 18:12:33 +0000 (18:12 +0000)]
rs6000.md (movsi_from_df): Optimize converting a DFmode to a SFmode...

2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.md (movsi_from_df): Optimize converting a
DFmode to a SFmode, and then needing to move the SFmode to a GPR
to use the XSCVDPSP instruction instead of FRSP and XSCVDPSPN.

From-SVN: r253210

6 years agors6000.md (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift right or...
Michael Meissner [Tue, 26 Sep 2017 18:04:37 +0000 (18:04 +0000)]
rs6000.md (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift right or vector extract after...

2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.md (movsi_from_sf): Adjust code to
eliminate doing a 32-bit shift right or vector extract after doing
XSCVDPSPN.  Use zero_extendsidi2 instead of p8_mfvsrd_4_disf to
move the value to the GPRs.
(movdi_from_sf_zero_ext): Likewise.
(reload_gpr_from_vsxsf): Likewise.
(p8_mfvsrd_4_disf): Delete, no longer used.

From-SVN: r253209

6 years agors6000.md (extendsi<mode>2): Add a splitter to do sign extension from a vector regist...
Michael Meissner [Tue, 26 Sep 2017 17:37:14 +0000 (17:37 +0000)]
rs6000.md (extendsi<mode>2): Add a splitter to do sign extension from a vector register to a GPR by doing a...

2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
sign extension from a vector register to a GPR by doing a 32-bit
direct move and then an EXTSW.
(extendsi<mode>2 splitter): Likewise.

From-SVN: r253208

6 years agoMake SRA qsort comparator transitive
Martin Jambor [Tue, 26 Sep 2017 17:15:29 +0000 (19:15 +0200)]
Make SRA qsort comparator transitive

2017-09-26  Martin Jambor  <mjambor@suse.cz>

* tree-sra.c (compare_access_positions): Put integral types first,
stabilize sorting of integral types, remove conditions putting
non-full-precision integers last.
(sort_and_splice_var_accesses): Disable scalarization if a
non-integert would be represented by a non-full-precision integer.

From-SVN: r253207

6 years agoassociate1.f90: Really commit change from 2017-09-25.
Thomas Koenig [Tue, 26 Sep 2017 16:49:13 +0000 (16:49 +0000)]
associate1.f90: Really commit change from 2017-09-25.

2017-09-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

* gfortran.dg/gomp/associate1.f90: Really commit change
from 2017-09-25.
* gfortran.dg/predcom-1.f: Likewise.
* gfortran.dg/unconstrained_commons.f: Likewise.

From-SVN: r253206

6 years agoEnable no-exec stacks for more targets using the Linux kernel.
Joseph Myers [Tue, 26 Sep 2017 16:35:53 +0000 (17:35 +0100)]
Enable no-exec stacks for more targets using the Linux kernel.

Building glibc for many different configurations and running the
compilation parts of the testsuite runs into failures of the
elf/check-execstack test for hppa and microblaze.  Those
configurations default to executable stacks in the Linux kernel
because of VM_DATA_DEFAULT_FLAGS definitions including VM_EXEC
(VM_DATA_DEFAULT_FLAGS being the default definition of
VM_STACK_DEFAULT_FLAGS).

This fails because those configurations are not generating
.note.GNU-stack sections to indicate that programs do not need an
executable stack.  This patch fixes GCC to generate those sections on
those architectures (when configured for a target using the Linux
kernel), as it does on other architectures, together with adding that
section to libgcc .S sources, with the same code as used on other
architectures (or a variant using "#ifdef __linux__" instead of the
usual "#if defined(__ELF__) && defined(__linux__)" for microblaze, as
that configuration doesn't use elfos.h and so doesn't define __ELF__).

This suffices to eliminate that glibc test failure.  (For hppa, the
compilation parts of the glibc testsuite still fail because of the
separate elf/check-textrel failure.)

gcc:
* config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
* config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
* config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
* config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
conditionals inside the function instead of around it.  Call
file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
(TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.

libgcc:
* config/microblaze/crti.S, config/microblaze/crtn.S,
config/microblaze/divsi3.S, config/microblaze/moddi3.S,
config/microblaze/modsi3.S, config/microblaze/muldi3_hard.S,
config/microblaze/mulsi3.S,
config/microblaze/stack_overflow_exit.S,
config/microblaze/udivsi3.S, config/microblaze/umodsi3.S,
config/pa/milli64.S: Add .note.GNU-stack section.

From-SVN: r253204

6 years agographite-scop-detection.c (scop_detection::build_scop_depth): Rewrite, fold in ...
Richard Biener [Tue, 26 Sep 2017 14:28:13 +0000 (14:28 +0000)]
graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite, fold in ...

2017-09-26  Richard Biener  <rguenther@suse.de>

* graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
fold in ...
(scop_detection::build_scop_breadth): ... this.  Removed.
(scop_detection::loop_is_valid_in_scop): Fold into single caller.
(scop_detection::harmful_stmt_in_bb): Likewise.
(scop_detection::graphite_can_represent_stmt): Likewise.
(scop_detection::loop_body_is_valid_scop): Likewise.  Remove recursion.
(scop_detection::can_represent_loop): Remove recursion, fold in ...
(scop_detection::can_represent_loop_1): ... this.  Removed.
(scop_detection::harmful_loop_in_region): Simplify after inlining
the above and remove more quadraticness.
(build_scops): Adjust.
* tree-data-ref.c (loop_nest_has_data_refs): Remove pointless
quadraticness.

From-SVN: r253203

6 years agore PR target/82267 (x32: unnecessary address-size prefixes. Why isn't -maddress...
Jakub Jelinek [Tue, 26 Sep 2017 13:59:18 +0000 (15:59 +0200)]
re PR target/82267 (x32: unnecessary address-size prefixes.  Why isn't -maddress-mode=long the default?)

PR target/82267
* config/i386/i386.c (ix86_print_operand_address_as): Only test
REGNO (base) == SP_REG if base is a REG.

From-SVN: r253202

6 years agore PR middle-end/35691 (Missed (a == 0) && (b == 0) into (a|(typeof(a)(b)) == 0 when...
Jakub Jelinek [Tue, 26 Sep 2017 13:58:11 +0000 (15:58 +0200)]
re PR middle-end/35691 (Missed (a == 0) && (b == 0) into (a|(typeof(a)(b)) == 0 when the types don't match)

PR middle-end/35691
* tree-ssa-reassoc.c (update_range_test): Dump r->exp each time
if it is different SSA_NAME.
(optimize_range_tests_cmp_bitwise): New function.
(optimize_range_tests): Call it.

* gcc.dg/pr35691-5.c: New test.
* gcc.dg/pr35691-6.c: New test.

From-SVN: r253201

6 years agoFix changelog entry.
Andreas Krebbel [Tue, 26 Sep 2017 11:50:30 +0000 (11:50 +0000)]
Fix changelog entry.

From-SVN: r253200

6 years agore PR tree-optimization/82321 (ICE in check_loop_closed_ssa_use, at tree-ssa-loop...
Richard Biener [Tue, 26 Sep 2017 11:05:42 +0000 (11:05 +0000)]
re PR tree-optimization/82321 (ICE in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:707)

2017-09-26  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82321
* graphite.c (canonicalize_loop_closed_ssa): Properly check
for the def being inside the loop.

* gcc.dg/graphite/pr82321.c: New testcase.

From-SVN: r253199

6 years agoS/390: Fix vmslg instruction and builtin.
Andreas Krebbel [Tue, 26 Sep 2017 10:35:53 +0000 (10:35 +0000)]
S/390: Fix vmslg instruction and builtin.

gcc/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/vx-builtins.md ("vmslg"): Add missing operand in
assembler output.
* config/s390/s390-builtins.def: Fix constraint on op4.

From-SVN: r253198

6 years agoS/390: Fix vector fp unordered compares
Andreas Krebbel [Tue, 26 Sep 2017 10:35:27 +0000 (10:35 +0000)]
S/390: Fix vector fp unordered compares

V2DF mode was still hard-coded here.

gcc/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.c (s390_expand_vec_compare): Use the new mode
independent expanders.
* config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt")
("vec_ordered", "vec_unordered"): New expanders.

From-SVN: r253197

6 years agoS/390: Set the preferred mode for float vectors
Andreas Krebbel [Tue, 26 Sep 2017 10:35:00 +0000 (10:35 +0000)]
S/390: Set the preferred mode for float vectors

gcc/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode
for SFmode.

From-SVN: r253196

6 years agoS/390: Fix rtl standard names for vector unpack low->lo
Andreas Krebbel [Tue, 26 Sep 2017 10:34:35 +0000 (10:34 +0000)]
S/390: Fix rtl standard names for vector unpack low->lo

gcc/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to
vec_unpacks_lo_v16qi.
("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi.

From-SVN: r253195

6 years agoS/390: Add FP vec_pack/unpack
Andreas Krebbel [Tue, 26 Sep 2017 10:34:08 +0000 (10:34 +0000)]
S/390: Add FP vec_pack/unpack

gcc/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/vector.md ("vec_unpacks_lo_v4sf")
("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df")
("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders.

From-SVN: r253194

6 years agoS/390: Add support for vec_shr
Andreas Krebbel [Tue, 26 Sep 2017 10:33:37 +0000 (10:33 +0000)]
S/390: Add support for vec_shr

gcc/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/predicates.md ("const_shift_by_byte_operand"): New
predicate.
* config/s390/vector.md ("*vec_srb<mode>"): Change modes to V_128
and V16QI.
("*vec_slb<mode>"): New insn pattern.
("vec_shr_<mode>"): New expander.
* config/s390/vx-builtins.md ("vec_slb<mode>"): Turn into expander
and force the shift count operand to V16QImode.
("vec_srb<mode>"): Set shift count mode to V16QI.

From-SVN: r253193

6 years agoS/390: Add widening vector mult lo/hi patterns
Andreas Krebbel [Tue, 26 Sep 2017 10:32:58 +0000 (10:32 +0000)]
S/390: Add widening vector mult lo/hi patterns

Add support for widening vector multiply lo/hi patterns.  These do not
directly match on IBM Z instructions but can be emulated with even/odd
+ vector merge.

gcc/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/vector.md ("vec_widen_umult_lo_<mode>")
("vec_widen_umult_hi_<mode>", "vec_widen_smult_lo_<mode>")
("vec_widen_smult_hi_<mode>"): New expander definitions.

From-SVN: r253192

6 years agoEnable vect testcases on S/390.
Andreas Krebbel [Tue, 26 Sep 2017 10:32:01 +0000 (10:32 +0000)]
Enable vect testcases on S/390.

Add s390 platform checks where appropriate.

gcc/testsuite/ChangeLog:

2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* lib/target-supports.exp: Enable tests for S/390.

From-SVN: r253191

6 years ago[ARM] PR82175 - fix -mcpu=native not working correctly.
Richard Earnshaw [Tue, 26 Sep 2017 09:33:49 +0000 (09:33 +0000)]
[ARM] PR82175 - fix -mcpu=native not working correctly.

The new option processing machinery relies on %< rules in the specs to
suppress options that are rewritten.  Suppression appears to be a two
phase process where the option is partially suppressed when %< is
processed and then fully suppressed at the end of the string.  Strings
are separated by commas and there can be multiple strings used to form
DRIVER_SELF_SPECS.

The fix in this case is to separate the driver self specs for ARM into
separate rules as described; this forces the -m{cpu,tune,arch}=native
options to be properly removed before proceeding to the next rule set.

PR target/82175
* config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas.

From-SVN: r253189

6 years agore PR tree-optimization/82320 (Compile time hog w/ -O)
Richard Biener [Tue, 26 Sep 2017 07:29:51 +0000 (07:29 +0000)]
re PR tree-optimization/82320 (Compile time hog w/ -O)

2017-09-26  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82320
* tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef
isn't a change.

* gcc.dg/torture/pr82320.c: New testcase.

From-SVN: r253188

6 years ago[testsuite][arm] Fix check_effective_target_vect_hw_misalign check.
Christophe Lyon [Tue, 26 Sep 2017 04:57:49 +0000 (04:57 +0000)]
[testsuite][arm] Fix check_effective_target_vect_hw_misalign check.

2017-09-26  Christophe Lyon  <christophe.lyon@linaro.org>

* lib/target-supports.exp (check_effective_target_vect_hw_misalign):
Fix arm check.

From-SVN: r253187

6 years agore PR demangler/82195 (Undemangleable lambda)
Nathan Sidwell [Tue, 26 Sep 2017 02:38:12 +0000 (02:38 +0000)]
re PR demangler/82195 (Undemangleable lambda)

PR demangler/82195
* cp-demangle.c (d_encoding): Strip return type when name is a
LOCAL_NAME.
(d_local_name): Strip return type of enclosing TYPED_NAME.
* testsuite/demangle-expected: Add and adjust tests.

From-SVN: r253186

6 years agoDaily bump.
GCC Administrator [Tue, 26 Sep 2017 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253185

6 years agors6000-protos.h (output_probe_stack_range): Update prototype for new argument.
Jeff Law [Mon, 25 Sep 2017 23:13:55 +0000 (17:13 -0600)]
rs6000-protos.h (output_probe_stack_range): Update prototype for new argument.

* config/rs6000/rs6000-protos.h (output_probe_stack_range): Update
prototype for new argument.
* config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function,
mostly extracted from rs6000_emit_allocate_stack.
(rs6000_emit_probe_stack_range_stack_clash): New function.
(rs6000_emit_allocate_stack): Call
rs6000_emit_probe_stack_range_stack_clash as needed.
(rs6000_emit_probe_stack_range): Add additional argument
to call to gen_probe_stack_range{si,di}.
(output_probe_stack_range): New.
(output_probe_stack_range_1): Renamed from output_probe_stack_range.
(output_probe_stack_range_stack_clash): New.
(rs6000_emit_prologue): Emit notes into dump file as requested.
* rs6000.md (allocate_stack): Handle -fstack-clash-protection.
(probe_stack_range<P:mode>): Operand 0 is now early-clobbered.
Add additional operand and pass it to output_probe_stack_range.

* lib/target-supports.exp
(check_effective_target_supports_stack_clash_protection): Enable for
rs6000 and powerpc targets.

From-SVN: r253179

6 years agore PR tree-optimization/82163 (ICE on valid code at -O3 on x86_64-linux-gnu: in check...
Bin Cheng [Mon, 25 Sep 2017 17:32:36 +0000 (17:32 +0000)]
re PR tree-optimization/82163 (ICE on valid code at -O3 on x86_64-linux-gnu: in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:707)

PR tree-optimization/82163
* tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter.
(checking_verify_loop_closed_ssa): New parameter.
* tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete.
(check_loop_closed_ssa_stmt): Delete.
(check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions.
(verify_loop_closed_ssa): Check loop closed ssa form for LOOP.
(tree_transform_and_unroll_loop): Check loop closed ssa form only for
changed loops.

gcc/testsuite
* gcc.dg/tree-ssa/pr82163.c: New test.

From-SVN: r253161

6 years agoBRIGFE fixes:
Pekka Jääskeläinen [Mon, 25 Sep 2017 17:17:29 +0000 (17:17 +0000)]
BRIGFE fixes:

* brig-builtins.def: Treat HSAIL barrier builtins as
  setjmp/longjump style functions.

* brigfrontend/brig-to-generic.cc: Ensure per WI copies of
  private variables are aligned too.

* rt/workitems.c: Assume the host runtime allocates the work group
  memory.

From-SVN: r253160

6 years agolang.opt: Add -Wdo-subscript.
Thomas Koenig [Mon, 25 Sep 2017 16:49:48 +0000 (16:49 +0000)]
lang.opt: Add -Wdo-subscript.

2017-09-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

* lang.opt:  Add -Wdo-subscript.
* frontend-passes.c (do_t): New type.
(doloop_list): Use variable of do_type.
(if_level): Variable to track if levels.
(select_level): Variable to track select levels.
(gfc_run_passes): Initialize i_level and select_level.
(doloop_code): Record current level of if + select
level in doloop_list.  Add seen_goto if there could
be a branch outside the loop. Use different type for
doloop_list.
(doloop_function): Call do_intent and do_subscript; move
functionality of checking INTENT to do_intent.
(insert_index_t): New type, for callback_insert_index.
(callback_insert_index): New function.
(insert_index): New function.
(do_subscript): New function.
(do_intent): New function.
(gfc_code_walker): Keep track of if_level and select_level.
* invoke.texi: Document -Wdo-subscript.

2017-09-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

* gfortran.dg/do_subscript_1.f90: New test.
* gfortran.dg/do_subscript_2.f90: New test.
* gfortran.dg/gomp/associate1.f90: Add out of bounds warning.
* gfortran.dg/predcom-1.f: Adjust loop bounds.
* gfortran.dg/unconstrained_commons.f: Add out of bounds warning.

From-SVN: r253156

6 years agoTurn CONSTANT_ALIGNMENT into a hook
Richard Sandiford [Mon, 25 Sep 2017 16:04:27 +0000 (16:04 +0000)]
Turn CONSTANT_ALIGNMENT into a hook

The definition:

  #define CONSTANT_ALIGNMENT(EXP, ALIGN) \
    (TREE_CODE (EXP) == STRING_CST \
     && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))

was very common, so the patch adds a canned definition for that,
called constant_alignment_word_strings.  Some ports had a variation
that used a port-local FASTEST_ALIGNMENT instead of BITS_PER_WORD;
the patch uses constant_alignment_word_strings if FASTEST_ALIGNMENT
was always BITS_PER_WORD and a port-local hook function otherwise.

2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* target.def (constant_alignment): New hook.
* defaults.h (CONSTANT_ALIGNMENT): Delete.
* doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with...
(TARGET_CONSTANT_ALIGNMENT): ...this new hook.
* doc/tm.texi: Regenerate.
* targhooks.h (default_constant_alignment): Declare.
(constant_alignment_word_strings): Likewise.
* targhooks.c (default_constant_alignment): New function.
(constant_alignment_word_strings): Likewise.
* builtins.c (get_object_alignment_2): Use targetm.constant_alignment
instead of CONSTANT_ALIGNMENT.
* varasm.c (align_variable, get_variable_align, build_constant_desc)
(force_const_mem): Likewise.
* config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete.
* config/aarch64/aarch64.c (aarch64_constant_alignment): New function.
(aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out
definition.
* config/arc/arc.h (CONSTANT_ALIGNMENT): Delete.
* config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete.
(CONSTANT_ALIGNMENT): Likewise.
* config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(arm_constant_alignment): New function.
* config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete.
* config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete.
* config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/cris/cris.h (CONSTANT_ALIGNMENT): Delete.
* config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(cris_constant_alignment): New function.
* config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete.
* config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(epiphany_constant_alignment): New function.
* config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete.
* config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/frv/frv.h (CONSTANT_ALIGNMENT): Delete.
* config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete.
* config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/i386/i386.h (CONSTANT_ALIGNMENT): Delete.
* config/i386/i386-protos.h (ix86_constant_alignment): Delete.
* config/i386/i386.c (ix86_constant_alignment): Make static.
Use the same interface as the target hook.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete.
* config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete.
* config/iq2000/iq2000.c (iq2000_constant_alignment): New function.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete.
* config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete.
* config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete.
* config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete.
* config/microblaze/microblaze.c (microblaze_constant_alignment):
New function.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/mips/mips.h (CONSTANT_ALIGNMENT): Delete.
* config/mips/mips.c (mips_constant_alignment): New function.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete.
* config/mmix/mmix-protos.h (mmix_constant_alignment): Delete.
* config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(mmix_constant_alignment): Make static.  Use the same interface
as the target hook.
* config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete.
* config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete.
* config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/pa/pa.h (CONSTANT_ALIGNMENT): Delete.
* config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete.
* config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(rs6000_constant_alignment): New function.
* config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete.
* config/riscv/riscv.c (riscv_constant_alignment): New function.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete.
* config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(rs6000_constant_alignment): New function.
* config/s390/s390.h (CONSTANT_ALIGNMENT): Delete.
* config/s390/s390.c (s390_constant_alignment): New function.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/sh/sh.h (CONSTANT_ALIGNMENT): Delete.
* config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete.
* config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(sparc_constant_alignment): New function.
* config/spu/spu.h (CONSTANT_ALIGNMENT): Delete.
* config/spu/spu.c (spu_constant_alignment): New function.
(TARGET_CONSTANT_ALIGNMENT): Redefine.
* config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete.
* config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete.
* config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete.
* config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
constant_alignment_word_strings.
* config/visium/visium.h (CONSTANT_ALIGNMENT): Delete.
* config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(visium_constant_alignment): New function.
* config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete.
* config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
(xtensa_constant_alignment): New function.
* system.h (CONSTANT_ALIGNMENT): Poison.

From-SVN: r253154

6 years agore PR c/81854 (weak alias of an incompatible symbol accepted)
Uros Bizjak [Mon, 25 Sep 2017 14:59:19 +0000 (16:59 +0200)]
re PR c/81854 (weak alias of an incompatible symbol accepted)

PR c/81854
* src/c++98/complex_io.cc (_GLIBCXX_LDBL_COMPAT): Declare alias
target as a C++ function with no prototype.

From-SVN: r253153

6 years agors6000.c (rs6000_gimple_fold_builtin): Add handling for early folding of vector store...
Will Schmidt [Mon, 25 Sep 2017 14:35:02 +0000 (14:35 +0000)]
rs6000.c (rs6000_gimple_fold_builtin): Add handling for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).

[gcc]

2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>

* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).
(rs6000_builtin_valid_without_lhs): New helper function.
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST.

From-SVN: r253152

6 years agofold-vec-st-char.c: New.
Will Schmidt [Mon, 25 Sep 2017 14:17:05 +0000 (14:17 +0000)]
fold-vec-st-char.c: New.

[gcc/testsuite]

2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>

    * gcc.target/powerpc/fold-vec-st-char.c: New.
    * gcc.target/powerpc/fold-vec-st-double.c: New.
    * gcc.target/powerpc/fold-vec-st-float.c: New.
    * gcc.target/powerpc/fold-vec-st-int.c: New.
    * gcc.target/powerpc/fold-vec-st-longlong.c: New.
    * gcc.target/powerpc/fold-vec-st-pixel.c: New.
    * gcc.target/powerpc/fold-vec-st-short.c: New.

From-SVN: r253151

6 years agoChange permute index type to unsigned short
Richard Sandiford [Mon, 25 Sep 2017 13:26:12 +0000 (13:26 +0000)]
Change permute index type to unsigned short

This patch changes the element type of (auto_)vec_perm_indices from
unsigned char to unsigned short.  This is needed for fixed-length
2048-bit SVE.  (SVE is variable-length by default, but it's possible
to ask for specific vector lengths if you want to.)

2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* target.h (vec_perm_indices): Use unsigned short rather than
unsigned char.
(auto_vec_perm_indices): Likewise.
* config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
Use unsigned int rather than unsigned char.
* config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.

From-SVN: r253150

6 years agocfgloop.h (sort_sibling_loops): Declare.
Richard Biener [Mon, 25 Sep 2017 13:19:16 +0000 (13:19 +0000)]
cfgloop.h (sort_sibling_loops): Declare.

2017-09-25  Richard Biener  <rguenther@suse.de>

* cfgloop.h (sort_sibling_loops): Declare.
* cfgloop.c (sort_sibling_loops_cmp): New helper.
(sort_sibling_loops): New function sorting the sibling loop list
in RPO order.
* graphite.c (graphite_transform_loops): Sort sibling loops.

From-SVN: r253149

6 years agoUpdate interface to TARGET_VECTORIZE_VEC_PERM_CONST_OK
Richard Sandiford [Mon, 25 Sep 2017 12:57:49 +0000 (12:57 +0000)]
Update interface to TARGET_VECTORIZE_VEC_PERM_CONST_OK

This patch makes TARGET_VECTORIZE_VEC_PERM_CONST_OK take the permute
vector in the form of a vec_perm_indices instead of an unsigned char *.
It follows on from the recent patch that did the same in target-independent
code.

It was easy to make ARM and AArch64 use vec_perm_indices internally
as well, and converting AArch64 helps with SVE.  I did try doing the same
for the other ports, but the surgery needed was much more invasive and
much less obviously correct.

2017-09-22  Richard Sandiford  <richard.sandifird@linaro.org>

gcc/
* target.def (vec_perm_const_ok): Change sel parameter to
vec_perm_indices.
* optabs-query.c (can_vec_perm_p): Update accordingly.
* doc/tm.texi: Regenerate.
* config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to
auto_vec_perm_indices and remove separate nelt field.
(aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
(aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup)
(aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1)
(aarch64_expand_vec_perm_const): Update accordingly.
(aarch64_vectorize_vec_perm_const_ok): Likewise.  Change sel
to vec_perm_indices.
* config/arm/arm.c (expand_vec_perm_d): Change perm to
auto_vec_perm_indices and remove separate nelt field.
(arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev)
(arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl)
(arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update
accordingly.
(arm_vectorize_vec_perm_const_ok): Likewise.  Change sel
to vec_perm_indices.
* config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
sel to vec_perm_indices.
* config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise.
* config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok):
Likewise.
* config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok):
Likewise.

From-SVN: r253148

6 years ago[PR82155] Fix crash in dwarf2out_abstract_function
Pierre-Marie de Rodat [Mon, 25 Sep 2017 12:26:36 +0000 (12:26 +0000)]
[PR82155] Fix crash in dwarf2out_abstract_function

This patch is an attempt to fix the crash reported in PR82155.

When generating a C++ class method for a class that is itself nested in
a class method, dwarf2out_early_global_decl currently leaves the
existing context DIE as it is if it already exists.  However, it is
possible that this call happens at a point where this context DIE is
just a declaration that is itself not located in its own context.

From there, if dwarf2out_early_global_decl is not called on any of the
FUNCTION_DECL in the context chain, DIEs will be left badly scoped and
some (such as the nested method) will be removed by the type pruning
machinery.  As a consequence, dwarf2out_abstract_function will will
crash when called on the corresponding DECL because it asserts that the
DECL has a DIE.

This patch fixes this crash making dwarf2out_early_global_decl process
context DIEs the same way we process abstract origins for FUNCTION_DECL:
if the corresponding DIE exists but is only a declaration, call
dwarf2out_decl anyway on it so that it is turned into a more complete
DIE and so that it is relocated in the proper context.

Bootstrapped and regtested on x86_64-linux.

gcc/

PR debug/82155
* dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
on the FUNCTION_DECL function context if it has a DIE that is a
declaration.

gcc/testsuite/

* g++.dg/pr82155.C: New testcase.

From-SVN: r253147

6 years agore PR tree-optimization/82285 (Optimizing error when using enumeration)
Richard Biener [Mon, 25 Sep 2017 11:40:23 +0000 (11:40 +0000)]
re PR tree-optimization/82285 (Optimizing error when using enumeration)

2017-09-25  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82285
* tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
enumeral types.

* gcc.dg/torture/pr82285.c: New testcase.

From-SVN: r253146

6 years ago[nvptx] Add exit after call to noreturn function
Tom de Vries [Mon, 25 Sep 2017 10:36:23 +0000 (10:36 +0000)]
[nvptx] Add exit after call to noreturn function

2017-09-25  Tom de Vries  <tom@codesourcery.com>

PR target/80035
PR target/81069
* config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
noreturn function.

From-SVN: r253145

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 25 Sep 2017 10:07:11 +0000 (10:07 +0000)]
[multiple changes]

2017-09-25  Justin Squirek  <squirek@adacore.com>

* aspects.adb, bindgen.adb, clean.adb, erroutc.adb, exp_ch13.adb,
exp_dbug.adb, exp_unst.adb, exp_util.adb, frontend.adb, gnat1drv.adb,
gnatdll.adb, gnatlink.adb, gnatls.adb, gnatname.adb, gnatxref.adb,
gnatfind.adb, libgnat/a-cfhama.ads, libgnat/a-exetim__mingw.adb,
libgnat/a-strmap.adb, libgnat/a-teioed.adb, libgnat/g-alvety.ads,
libgnat/g-expect.adb, libgnat/g-regist.adb, libgnat/g-socket.adb,
libgnat/g-socthi__mingw.ads, libgnat/s-stausa.adb,
libgnat/s-tsmona__linux.adb, libgnat/s-tsmona__mingw.adb,
libgnarl/s-taenca.adb, libgnarl/s-tassta.adb, libgnarl/s-tarest.adb,
libgnarl/s-tpobop.adb, make.adb, makeusg.adb, namet.adb, output.ads,
put_scos.adb, repinfo.adb, rtsfind.adb, scn.ads, sem_attr.adb,
sem_aux.ads, sem_warn.ads, targparm.adb, xr_tabls.adb, xref_lib.adb:
Removal of ineffective use-clauses.
* exp_ch9.adb (Is_Simple_Barrier_Name): Check for false positives with
constant folded barriers.
* ghost.adb, sprint.adb, sem_ch10.adb, sem_warn.adb: Change access to
Subtype_Marks and Names list in use-clause nodes to their new singular
counterparts (e.g. Subtype_Mark, Name).
* par.adb, par-ch8.adb (Append_Use_Clause): Created to set
Prev_Ids and More_Ids in use-clause nodes.
(P_Use_Clause): Modify to take a list as a parameter.
(P_Use_Package_Clause, P_Use_Type_Clause): Divide names and
subtype_marks within an aggregate use-clauses into individual clauses.
* par-ch3.adb, par-ch10.adb, par-ch12.adb: Trivally modify call to
P_Use_Clause to match its new behavior.
* sem.adb (Analyze): Mark use clauses for non-overloaded entities.
* sem_ch4.adb (Try_One_Interp): Add sanity check to handle previous
errors.
* sem_ch6.adb (Analyze_Generic_Subprogram_Body,
Analyze_Subprogram_Body_Helper): Update use clause chain at the end of
the declarative region.
* sem_ch7.adb (Analyze_Package_Body_Helper): Update use clause chain
after analysis (Analyze_Package_Specification): Update use clause chain
when there is no body.
* sem_ch8.ads, sem_ch8.adb (Analyze_Use_Package, Analyze_Use_Type): Add
parameter to determine weither the installation of scopes should also
propagate on the use-clause "chain".
(Mark_Use_Clauses): Created to traverse use-clause chains and determine
what constitutes a valid "use" of a clause.
(Update_Use_Clause_Chain): Created to aggregate common machinary used
to clean up use-clause chains (and warn on ineffectiveness) at the end
of declaritive regions.
* sem_ch8.adb (Analyze_Package_Name): Created to perform analysis on a
package name from a use-package clause.
(Analyze_Package_Name_List): Created to perform analysis on a list of
package names (similar to Analyze_Package_Name).
(Find_Most_Prev): Created to traverse to the beginning of a given
use-clause chain.
(Most_Decendant_Use_Clause): Create to identify which clause from a
given set is highest in scope (not always the most prev).
(Use_One_Package, Use_One_Type): Major cleanup and reorganization to
handle the new chaining algorithm, also many changes related to
redundant clauses. A new parameter has also been added to force
installation to handle certain cases.
* sem_ch9.adb (Analyze_Entry_Body, Analyze_Protected_Body,
Analyze_Task_Body): Mark use clauses on relevant entities.
* sem_ch10.adb, sem_ch10.ads (Install_Context_Clauses,
Install_Parents): Add parameter to determine weither the installation
of scopes should also propagate on the use-clause "chain".
* sem_ch12.adb (Inline_Instance_Body): Add flag in call to
Install_Context to avoid redundant chaining of use-clauses.
* sem_ch13.adb: Minor reformatting.
* sem_res.adb (Resolve): Mark use clauses on operators.
(Resolve_Call, Resolve_Entity_Name): Mark use clauses on relevant
entities.
* sinfo.adb, sinfo.ads (Is_Effective_Use_Clause,
Set_Is_Effective_Use_Clause): Add new flag to N_Use_Clause nodes to
represent any given clause's usage/reference/necessity.
(Prev_Use_Clause, Set_Prev_Use_Clause): Add new field to N_Use_Clause
nodes to allow loose chaining of redundant clauses.
(Set_Used_Operations, Set_Subtype_Mark, Set_Prev_Ids, Set_Names,
Set_More_Ids, Set_Name): Modify set procedure calls to reflect
reorganization in node fields.
* types.ads (Source_File_Index): Adjust index bounds.
(No_Access_To_Source_File): New constant.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Analyze_One_Aspect): In ASIS mode make a full copy of
the expression to be used in the generated attribute specification
(rather than relocating it) to avoid resolving a potentially malformed
tree when the expression is resolved through an ASIS-specific call to
Resolve_Aspect_Expressions.  This manifests itself as a crash on a
function with parameter associations.

From-SVN: r253144

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 25 Sep 2017 09:51:49 +0000 (09:51 +0000)]
[multiple changes]

2017-09-25  Yannick Moy  <moy@adacore.com>

* exp_spark.adb (Expand_SPARK_Indexed_Component,
Expand_SPARK_Selected_Component): New procedures to insert explicit
dereference if required.
(Expand_SPARK): Call the new procedures.

2017-09-25  Patrick Bernardi  <bernardi@adacore.com>

* libgnat/a-stwiun.adb, libgnat/s-stchop__vxworks.adb,
libgnat/g-socthi__vxworks.ads, libgnat/a-stzunb.adb,
libgnat/a-strunb.adb, libgnarl/s-osinte__lynxos178.adb,
libgnarl/s-intman__vxworks.adb, libgnarl/s-osinte__darwin.adb,
libgnarl/a-exetim__darwin.adb: Removed ineffective use-clauses.

2017-09-25  Vasiliy Fofanov  <fofanov@adacore.com>

* adaint.c (win32_wait): Properly handle error and take into account
the WIN32 limitation on the number of simultaneous wait objects.

2017-09-25  Yannick Moy  <moy@adacore.com>

* sem_ch3.adb (Constant_Redeclaration): Do not insert a call to the
invariant procedure in GNATprove mode.
* sem_ch5.adb (Analyze_Assignment): Likewise.

From-SVN: r253143

6 years agographite-optimize-isl.c (optimize_isl): Fail and dump if ISL errors other than isl_er...
Richard Biener [Mon, 25 Sep 2017 09:48:31 +0000 (09:48 +0000)]
graphite-optimize-isl.c (optimize_isl): Fail and dump if ISL errors other than isl_error_quota happen.

2017-09-25  Richard Biener  <rguenther@suse.de>

* graphite-optimize-isl.c (optimize_isl): Fail and dump if
ISL errors other than isl_error_quota happen.  Dump if the
schedule is the same.
* graphite-sese-to-poly.c (build_poly_scop): Fail on ISL
errors instead of aborting inside ISL.

From-SVN: r253142

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 25 Sep 2017 09:34:10 +0000 (09:34 +0000)]
[multiple changes]

2017-09-25  Piotr Trojanek  <trojanek@adacore.com>

* adabkend.adb (Call_Back_End): Fix wording of "front-end" and
"back-end" in comments.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

* exp_ch6.adb (Expand_Call_Helper): The extra accessibility check in a
call that appears in a classwide precondition and that mentions an
access formal of the subprogram, must use the accessibility level of
the actual in the call. This is one case in which a reference to a
formal parameter appears outside of the body of the subprogram.

From-SVN: r253141

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 25 Sep 2017 09:24:26 +0000 (09:24 +0000)]
[multiple changes]

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_res.adb (Replace_Actual_Discriminants): Replace a discriminant
for GNATprove.
(Resolve_Entry): Clean up predicate

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Analyze_Constituent): Raise Unrecoverable_Error rather
than Program_Error because U_E is more in line with respect to the
intended behavior.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Resolve_Aspect_Expressions): The expression for aspect
Storage_Size does not freeze, and thus can include references to
deferred constants.

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_spark.adb (Expand_SPARK_Potential_Renaming): Do not process a
reference when it appears within a pragma of no significance to SPARK.
(In_Insignificant_Pragma): New routine.
* sem_prag.ads: Add new table Pragma_Significant_In_SPARK.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Analyze_Associations, case N_Formal_Package): If the
actual is a renaming, indicate that it is the renamed package that must
be frozen before the instantiation.

2017-09-25  Yannick Moy  <moy@adacore.com>

* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo in description
of dimensionality system in GNAT UG.
* gnat_ugn.texi: Regenerate.

2017-09-25  Yannick Moy  <moy@adacore.com>

* gnat1drv.adb: Call Check_Safe_Pointers from the frontend in
GNATprove_Mode when switch -gnatdF used.

2017-09-25  Piotr Trojanek  <trojanek@adacore.com>

* adabkend.adb (Call_Back_End): Reset Current_Error_Node when starting
the backend.

From-SVN: r253140

6 years agoexp_imgv.adb (Expand_Image_Attribute): Disable the optimized expansion of user-define...
Pierre-Marie de Rodat [Mon, 25 Sep 2017 09:06:22 +0000 (09:06 +0000)]
exp_imgv.adb (Expand_Image_Attribute): Disable the optimized expansion of user-defined enumeration types when...

gcc/ada/

2017-09-25  Javier Miranda  <miranda@adacore.com>

* exp_imgv.adb (Expand_Image_Attribute): Disable the optimized
expansion of user-defined enumeration types when the generation of
names for enumeration literals is suppressed.

2017-09-25  Gary Dismukes  <dismukes@adacore.com>

* libgnarl/s-taprop__linux.adb: Minor reformatting.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Resolve_Aspect_Expressions): Do not resolve identifiers
that appear as selector names of parameter associations, as these are
never resolved by visibility.

2017-09-25  Justin Squirek  <squirek@adacore.com>

* sem_res.adb (Resolve_Entry): Generate reference for index entities.

gcc/testsuite/

2017-09-25  Justin Squirek  <squirek@adacore.com>

* gnat.dg/entry_family.adb: New testcase

From-SVN: r253139

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 25 Sep 2017 08:52:51 +0000 (08:52 +0000)]
[multiple changes]

2017-09-25  Doug Rupp  <rupp@adacore.com>

* libgnarl/s-taprop__linux.adb (Compute_Base_Monotonic_Clock): Refine.

2017-09-25  Javier Miranda  <miranda@adacore.com>

* exp_imgv.adb (Is_User_Defined_Enumeration_Type): New subprogram.
(Expand_User_Defined_Enumeration_Image): New subprogram.
(Expand_Image_Attribute): Enable speed-optimized expansion of
user-defined enumeration types when we are compiling with optimizations
enabled.

2017-09-25  Piotr Trojanek  <trojanek@adacore.com>

* sem_util.adb (Has_Null_Abstract_State): Remove, as an exactly same
routine is already provided by Einfo.
* einfo.adb (Has_Null_Abstract_State): Replace with the body from
Sem_Util, which had better comments and avoided double calls to
Abstract_State.

From-SVN: r253138

6 years ago[Patch, Darwin] Fix PR80556 by linking the system unwinder ahead of libgcc_eh.
Iain Sandoe [Mon, 25 Sep 2017 08:47:41 +0000 (08:47 +0000)]
[Patch, Darwin] Fix PR80556 by linking the system unwinder ahead of libgcc_eh.

PR target/80556
* config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead
of libgcc_eh for m64.
* config/i386/darwin64.h: Likewise.

/* WORKAROUND pr80556:
   For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected
   from libSystem).  This doesn't use the keymgr (see keymgr.c) and therefore
   the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not
   updated to include new images, and might not even be valid for a single
   image.
   Therefore, for 64b exes at least, we must use the libunwind implementation,
   even when static-libgcc is specified.  We put libSystem first so that
   unwinder symbols are satisfied from there.

From-SVN: r253137

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 25 Sep 2017 08:46:40 +0000 (08:46 +0000)]
[multiple changes]

2017-09-25  Bob Duff  <duff@adacore.com>

* exp_ch3.adb: Rename Comp_Type_Simple to be Comp_Simple_Init.

2017-09-25  Doug Rupp  <rupp@adacore.com>

* libgnarl/s-taprop__linux.adb (Base_Monotonic_Clock): New variable.
(Compute_Base_Monotonic_Clock): New function.
(Timed_Sleep): Adjust to use Base_Monotonic_Clock.
(Timed_Delay): Likewise.
(Monotonic_Clock): Likewise.
* s-oscons-tmplt.c (CLOCK_MONOTONIC): Use on Linux.

From-SVN: r253136

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 25 Sep 2017 08:40:27 +0000 (08:40 +0000)]
[multiple changes]

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Save_References_In_Aggregate): Small correction to
previous change.

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch5.adb, sem_ch4.adb, sem_ch13.adb, sem_attr.adb, exp_ch3.adb:
Minor reformatting.

From-SVN: r253135

6 years agore PR debug/82144 (ICE in add_dwarf_attr with alignas)
Richard Biener [Mon, 25 Sep 2017 07:25:31 +0000 (07:25 +0000)]
re PR debug/82144 (ICE in add_dwarf_attr with alignas)

2017-09-25  Richard Biener  <rguenther@suse.de>

PR middle-end/82144
* dwarf2out.c (gen_enumeration_type_die): Do not add alignment
attribute for incomplete types nor twice for complete ones.

From-SVN: r253134

6 years agoAdd myself as nvptx maintainer
Tom de Vries [Mon, 25 Sep 2017 07:11:31 +0000 (07:11 +0000)]
Add myself as nvptx maintainer

2017-09-25  Tom de Vries  <tom@codesourcery.com>

* MAINTAINERS (CPU Port Maintainers): Add myself as nvptx maintainer.

From-SVN: r253133

6 years agoRemove unnecessary fold_convert in gfc_(un)likely
Janne Blomqvist [Mon, 25 Sep 2017 06:44:18 +0000 (09:44 +0300)]
Remove unnecessary fold_convert in gfc_(un)likely

This patch removes an unnecessary fold_convert to boolean_type_node at
the end of gfc_likely and gfc_unlikely.  It makes no difference to the
generated code, but makes tree dumps a little bit cleaner.

2017-09-25  Janne Blomqvist  <jb@gcc.gnu.org>
        * trans.c (gfc_unlikely): Remove unnecessary fold_convert.
        (gfc_likely): Likewise.

Regtested on x86_64-pc-linux-gnu.

From-SVN: r253132