]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years agoaarch64 - Set the mode for the unspec in speculation_tracker insn.
rearnsha [Tue, 6 Nov 2018 17:18:37 +0000 (17:18 +0000)] 
aarch64 - Set the mode for the unspec in speculation_tracker insn.

The speculation tracker insn in my recent patch set for CVE-2017-5753
was missing a mode on the UNSPEC.  Although this didn't break the
build, it did cause an unnecessary warning from the MD parsing
mechanism that I missed at the time.  It's a trivial fix, as follows:

* config/aarch64/aarch64.md (speculation_tracker): Set the mode for
the UNSPEC.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265849 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-06 Richard Biener <rguenther@suse.de>
rguenth [Tue, 6 Nov 2018 15:46:42 +0000 (15:46 +0000)] 
2018-11-06  Richard Biener  <rguenther@suse.de>

PR tree-optimization/86850
* vec.h (vec<T, va_heap, vl_ptr>::splice): Check src.length ()
instead of src.m_vec.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265848 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree.c (fld_simplified_type_name): Break out form ...
hubicka [Tue, 6 Nov 2018 15:41:32 +0000 (15:41 +0000)] 
* tree.c (fld_simplified_type_name): Break out form ...
(free_lang_data_in_type): ... here.
(fld_type_variant_equal_p): Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265847 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix D compilation on Solaris
ro [Tue, 6 Nov 2018 15:08:46 +0000 (15:08 +0000)] 
Fix D compilation on Solaris

* config/default-d.c: Include memmodel.h.

* config/sol2-d.c: New file.
* config/t-sol2 (sol2-d.o): New rule.
* config.gcc <*-*-solaris2*>: Set d_target_objs,
target_has_targetdm.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265846 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree.c (fld_type_variant): Also copy alignment; be sure that
hubicka [Tue, 6 Nov 2018 13:53:22 +0000 (13:53 +0000)] 
* tree.c (fld_type_variant): Also copy alignment; be sure that
new variant is equal.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265845 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Introduce relative_long attribute
iii [Tue, 6 Nov 2018 13:20:21 +0000 (13:20 +0000)] 
S/390: Introduce relative_long attribute

In order to properly fix PR87762, we need to distinguish between
instructions which support relative addressing and instructions which
don't.  We could check whether the existing "type" attribute is equal to
"larl", but there are notable exceptions (lrl, for example), and
changing them makes scheduling worse on z10.  We could also check
whether the existing "op_type" attribute is equal to "RIL-b" or "RIL-c".
However, adding a new attribute provides more flexibility, since we
don't depend idiosyncrasies which might be introduced into PoP in the
future.

gcc/ChangeLog:

2018-11-06  Ilya Leoshkevich  <iii@linux.ibm.com>

PR target/87762
* config/s390/s390.md: Add relative_long attribute.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265844 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Accept cdb in load-and-test-fp-1 testcase
iii [Tue, 6 Nov 2018 13:16:41 +0000 (13:16 +0000)] 
S/390: Accept cdb in load-and-test-fp-1 testcase

The compiler now generates cdb instead of cdbr for comparison with 0.0,
which looks like an improvement to me.

gcc/testsuite/ChangeLog:

2018-11-06  Ilya Leoshkevich  <iii@linux.ibm.com>

* gcc.target/s390/load-and-test-fp-1.c: Accept cdb.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265843 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-06 Chung-Lin Tang <cltang@codesourcery.com>
cltang [Tue, 6 Nov 2018 13:09:52 +0000 (13:09 +0000)] 
2018-11-06  Chung-Lin Tang <cltang@codesourcery.com>

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
libgomp/
* oacc-mem.c (memcpy_tofrom_device): New function, combined from
acc_memcpy_to/from_device functions, now with async parameter.
(acc_memcpy_to_device): Modify to use memcpy_tofrom_device.
(acc_memcpy_from_device): Likewise.
(acc_memcpy_to_device_async): New API function.
(acc_memcpy_from_device_async): Likewise.
(present_create_copy): Add async parameter and async setting/unsetting.
(acc_create): Adjust present_create_copy call.
(acc_copyin): Likewise.
(acc_present_or_create): Likewise.
(acc_present_or_copyin): Likewise.
(acc_create_async): New API function.
(acc_copyin_async): New API function.
(delete_copyout): Add async parameter and async setting/unsetting.
(acc_delete): Adjust delete_copyout call.
(acc_copyout): Likewise.
(acc_delete_async): New API function.
(acc_copyout_async): Likewise.
(update_dev_host): Add async parameter and async setting/unsetting.
(acc_update_device): Adjust update_dev_host call.
(acc_update_self): Likewise.
(acc_update_device_async): New API function.
(acc_update_self_async): Likewise.
* openacc.h (acc_copyin_async): Declare new API function.
(acc_create_async): Likewise.
(acc_copyout_async): Likewise.
(acc_delete_async): Likewise.
(acc_update_device_async): Likewise.
(acc_update_self_async): Likewise.
(acc_memcpy_to_device_async): Likewise.
(acc_memcpy_from_device_async): Likewise.
* openacc_lib.h (acc_copyin_async_32_h): New subroutine.
(acc_copyin_async_64_h): New subroutine.
(acc_copyin_async_array_h): New subroutine.
(acc_create_async_32_h): New subroutine.
(acc_create_async_64_h): New subroutine.
(acc_create_async_array_h): New subroutine.
(acc_copyout_async_32_h): New subroutine.
(acc_copyout_async_64_h): New subroutine.
(acc_copyout_async_array_h): New subroutine.
(acc_delete_async_32_h): New subroutine.
(acc_delete_async_64_h): New subroutine.
(acc_delete_async_array_h): New subroutine.
(acc_update_device_async_32_h): New subroutine.
(acc_update_device_async_64_h): New subroutine.
(acc_update_device_async_array_h): New subroutine.
(acc_update_self_async_32_h): New subroutine.
(acc_update_self_async_64_h): New subroutine.
(acc_update_self_async_array_h): New subroutine.
* openacc.f90 (acc_copyin_async_32_h): New subroutine.
(acc_copyin_async_64_h): New subroutine.
(acc_copyin_async_array_h): New subroutine.
(acc_create_async_32_h): New subroutine.
(acc_create_async_64_h): New subroutine.
(acc_create_async_array_h): New subroutine.
(acc_copyout_async_32_h): New subroutine.
(acc_copyout_async_64_h): New subroutine.
(acc_copyout_async_array_h): New subroutine.
(acc_delete_async_32_h): New subroutine.
(acc_delete_async_64_h): New subroutine.
(acc_delete_async_array_h): New subroutine.
(acc_update_device_async_32_h): New subroutine.
(acc_update_device_async_64_h): New subroutine.
(acc_update_device_async_array_h): New subroutine.
(acc_update_self_async_32_h): New subroutine.
(acc_update_self_async_64_h): New subroutine.
(acc_update_self_async_array_h): New subroutine.
* libgomp.map (OACC_2.5): Add acc_copyin_async*, acc_copyout_async*,
acc_copyout_finalize_async*, acc_create_async*, acc_delete_async*,
acc_delete_finalize_async*, acc_memcpy_from_device_async*,
acc_memcpy_to_device_async*, acc_update_device_async*, and
acc_update_self_async* entries.
* testsuite/libgomp.oacc-c-c++-common/lib-94.c: New test.
* testsuite/libgomp.oacc-c-c++-common/lib-95.c: New test.
* testsuite/libgomp.oacc-fortran/lib-16.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265842 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * ipa-pure-const.c (check_decl): Do not test TYPE_NEEDS_CONSTRUCTING.
hubicka [Tue, 6 Nov 2018 12:46:46 +0000 (12:46 +0000)] 
* ipa-pure-const.c (check_decl): Do not test TYPE_NEEDS_CONSTRUCTING.
* lto-streamer-out.c (hash_tree): Do not hash TYPE_NEEDS_CONSTRUCTING.
* tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
stream TYPE_NEEDS_CONSTRUCTING.
* tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
* tree.c (free_lang_data_in_type): Clear TYPE_NEEDS_CONSTRUCTING.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265841 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-06 Richard Biener <rguenther@suse.de>
rguenth [Tue, 6 Nov 2018 12:19:22 +0000 (12:19 +0000)] 
2018-11-06  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_slp_bb): Move opening of vect_slp_analyze_bb
dump-scope ...
(vect_slp_analyze_bb_1): ... here to avoid hiding optimized locations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265840 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
jozefl [Tue, 6 Nov 2018 11:49:54 +0000 (11:49 +0000)] 
2018-11-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* gcc/config/msp430/msp430.h (REG_CLASS_CONTENTS): Add R0 to
REG_CLASS_CONTENTS[GEN_REGS].
(REGNO_REG_CLASS): Return NO_REGS for R2 and R3.

* gcc/testsuite/gcc.target/msp430/special-regs.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265839 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree.c (fld_simplified_type_of): Clear TYPELESS_STORAGE flag.
hubicka [Tue, 6 Nov 2018 11:36:21 +0000 (11:36 +0000)] 
 * tree.c (fld_simplified_type_of): Clear TYPELESS_STORAGE flag.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265838 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoEnable libsanitizer on Solaris (PR sanitizer/80953)
ro [Tue, 6 Nov 2018 10:49:34 +0000 (10:49 +0000)] 
Enable libsanitizer on Solaris (PR sanitizer/80953)

gcc:
PR sanitizer/80953
* config/sol2.h (ASAN_CC1_SPEC): Define.
(LD_WHOLE_ARCHIVE_OPTION): Define.
(LD_NO_WHOLE_ARCHIVE_OPTION): Define.
(ASAN_REJECT_SPEC): Provide default.
(LIBASAN_EARLY_SPEC): Define.
(LIBTSAN_EARLY_SPEC): Define.
(LIBLSAN_EARLY_SPEC): Define.
* config/i386/sol2.h (CC1_SPEC): Redefine.
(ASAN_REJECT_SPEC): Define.

* config/sparc/sparc.c (sparc_asan_shadow_offset): Declare.
(TARGET_ASAN_SHADOW_OFFSET): Define.
(sparc_asan_shadow_offset): New function.
* config/sparc/sol2.h (CC1_SPEC): Append ASAN_CC1_SPEC.
(ASAN_REJECT_SPEC): Define.

gcc/testsuite:
PR sanitizer/80953
* c-c++-common/asan/alloca_loop_unpoisoning.c: Require alloca
support.
(foo): Use __builtin_alloca.

libsanitizer:
PR sanitizer/80953
* configure.tgt (sparc*-*-solaris2.11*): Enable.
(x86_64-*-solaris2.11* | i?86-*-solaris2.11*): Enable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265837 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoCherry-pick Solaris sanitizer fixes (PR sanitizer/80953)
ro [Tue, 6 Nov 2018 10:42:05 +0000 (10:42 +0000)] 
Cherry-pick Solaris sanitizer fixes (PR sanitizer/80953)

PR sanitizer/80953
* sanitizer_common/sanitizer_internal_defs.h,
sanitizer_common/sanitizer_platform_limits_solaris.h,
sanitizer_common/sanitizer_procmaps_solaris.cc,
sanitizer_common/sanitizer_solaris.cc: Cherry-pick compiler-rt
revision 346153.
* sanitizer_common/sanitizer_stacktrace.h,
sanitizer_common/sanitizer_stacktrace_sparc.cc: Cherry-pick
compiler-rt revision 346155.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265836 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.dg/lto/tbaa-1.c: New testcase.
hubicka [Tue, 6 Nov 2018 10:26:44 +0000 (10:26 +0000)] 
* gcc.dg/lto/tbaa-1.c: New testcase.

* tree.c (fld_type_variant): Copy canonical type.
(fld_incomplete_type_of): Check that canonical types looks sane;
copy canonical type.
(verify_type): Accept when incomplete type has complete canonical type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265835 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree.c (free_lang_data): Reset overwite_assembler_name,
hubicka [Tue, 6 Nov 2018 10:25:25 +0000 (10:25 +0000)] 
* tree.c (free_lang_data): Reset overwite_assembler_name,
print_xnode, print_decl, print_type and print_identifier of
langhooks.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265834 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-06 Richard Biener <rguenther@suse.de>
rguenth [Tue, 6 Nov 2018 10:23:30 +0000 (10:23 +0000)] 
2018-11-06  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87889
* tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
Do nothing if old and new arg are the same

* gcc.dg/pr87894.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265833 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Fix PR87723
krebbel [Tue, 6 Nov 2018 10:22:05 +0000 (10:22 +0000)] 
S/390: Fix PR87723

gcc/ChangeLog:

2018-11-06  Andreas Krebbel  <krebbel@linux.ibm.com>

PR target/87723
* config/s390/s390.md ("*r<noxa>sbg_di_rotl"): Remove mode
attributes for operands 3 and 4.

gcc/testsuite/ChangeLog:

2018-11-06  Andreas Krebbel  <krebbel@linux.ibm.com>

PR target/87723
* gcc.target/s390/pr87723.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265832 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR ada/81878
ebotcazou [Tue, 6 Nov 2018 08:42:56 +0000 (08:42 +0000)] 
PR ada/81878
Revert
2018-10-29  Tamar Christina  <tamar.christina@arm.com>

PR ada/81878
* Makefile.in (TOOLS_FLAGS_TO_PASS_NATIVE): Add -B ../../.

2017-08-17  Richard Biener  <rguenther@suse.de>

PR ada/81878
* Makefile.in (CXX_LFLAGS): Remove.
(TOOLS_FLAGS_TO_PASS_NATIVE): Pass $(CXX) as CXX.
(TOOLS_FLAGS_TO_PASS_RE): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265830 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-06 Richard Biener <rguenther@suse.de>
rguenth [Tue, 6 Nov 2018 08:09:03 +0000 (08:09 +0000)] 
2018-11-06  Richard Biener  <rguenther@suse.de>

PR middle-end/18041
* simplify-rtx.c (simplify_binary_operation_1): Add pattern
matching bitfield insertion.

* gcc.target/i386/pr18041-1.c: New testcase.
* gcc.target/i386/pr18041-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265829 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogOlogy: fix debug binds in auto-inc-dec
aoliva [Tue, 6 Nov 2018 05:33:40 +0000 (05:33 +0000)] 
gOlogy: fix debug binds in auto-inc-dec

As auto_inc_dec pass combines incs and mems from different insns, it
often causes regs to temporarily hold a value different from the one
it would before the transformation.  Debug insns within that range
would therefore end up binding to the wrong expression after the
transformation.

This patch adjusts debug binds in the affected range.

for  gcc/ChangeLog

* auto-inc-dec.c: Include valtrack.h.  Improve comments.
(reg_next_debug_use): New.
(attempt_change): Propagate adjusted expression into affected
debug insns.
(merge_in_block): Track uses in debug insns.
(pass_inc_dec::execute): Allocate and release
reg_next_debug_use.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265828 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc/
xguo [Tue, 6 Nov 2018 03:19:37 +0000 (03:19 +0000)] 
gcc/
2018-11-06 Wei Xiao <wei3.xiao@intel.com>

* config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics.
(_mm512_fixupimm_round_pd): Update parameters and builtin.
(_mm512_maskz_fixupimm_round_pd): Ditto.
(_mm512_fixupimm_round_ps): Ditto.
(_mm512_maskz_fixupimm_round_ps): Ditto.
(_mm_fixupimm_round_sd): Ditto.
(_mm_maskz_fixupimm_round_sd): Ditto.
(_mm_fixupimm_round_ss): Ditto.
(_mm_maskz_fixupimm_round_ss): Ditto.
(_mm512_fixupimm_pd): Ditto.
(_mm512_maskz_fixupimm_pd): Ditto.
(_mm512_fixupimm_ps): Ditto.
(_mm512_maskz_fixupimm_ps): Ditto.
(_mm_fixupimm_sd): Ditto.
(_mm_maskz_fixupimm_sd): Ditto.
(_mm_fixupimm_ss): Ditto.
(_mm_maskz_fixupimm_ss): Ditto.
(_mm512_mask_fixupimm_round_pd): Update builtin.
(_mm512_mask_fixupimm_round_ps): Ditto.
(_mm_mask_fixupimm_round_sd): Ditto.
(_mm_mask_fixupimm_round_ss): Ditto.
(_mm512_mask_fixupimm_pd): Ditto.
(_mm512_mask_fixupimm_ps): Ditto.
(_mm_mask_fixupimm_sd): Ditto.
(_mm_mask_fixupimm_ss): Ditto.
* config/i386/avx512vlintrin.h:
(_mm256_fixupimm_pd): Update parameters and builtin.
(_mm256_maskz_fixupimm_pd): Ditto.
(_mm256_fixupimm_ps): Ditto.
(_mm256_maskz_fixupimm_ps): Ditto.
(_mm_fixupimm_pd): Ditto.
(_mm_maskz_fixupimm_pd): Ditto.
(_mm_fixupimm_ps): Ditto.
(_mm_maskz_fixupimm_ps): Ditto.
(_mm256_mask_fixupimm_pd): Update builtin.
(_mm256_mask_fixupimm_ps): Ditto.
(_mm_mask_fixupimm_pd): Ditto.
(_mm_mask_fixupimm_ps): Ditto.
* config/i386/i386-builtin-types.def: Add new types and remove useless ones.
* config/i386/i386-builtin.def: Update builtin definitions.
* config/i386/i386.c: Handle new builtin types and remove useless ones.
* config/i386/sse.md: Update VFIXUPIMM* patterns.
(<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
(<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
(<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Update.
(avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
(avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
(avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Update.
* config/i386/subst.md:
(round_saeonly_sd_mask_operand4): Add new subst_attr.
(round_saeonly_sd_mask_op4): Ditto.
(round_saeonly_expand_operand5): Ditto.
(round_saeonly_expand): Update.

gcc/testsuite/
2018-11-06 Wei Xiao <wei3.xiao@intel.com>

* gcc.target/i386/avx-1.c: Update tests for VFIXUPIMM* intrinsics.
* gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto.
* gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto.
* gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto.
* gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto.
* gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto.
* gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto.
* gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto.
* gcc.target/i386/avx512vl-vfixupimmpd-1.c: Ditto.
* gcc.target/i386/avx512vl-vfixupimmps-1.c: Ditto.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* gcc.target/i386/testimm-10.c: Ditto.
* gcc.target/i386/testround-1.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265827 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Tue, 6 Nov 2018 00:17:07 +0000 (00:17 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265826 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc: xtensa: don't force PIC for uclinux target
jcmvbkbc [Mon, 5 Nov 2018 23:58:13 +0000 (23:58 +0000)] 
gcc: xtensa: don't force PIC for uclinux target

xtensa-uclinux uses bFLT executable file format that cannot relocate
fields representing offsets from data to code. C++ objects built as PIC
use offsets to encode FDE structures. As a result C++ exception handling
doesn't work correctly on xtensa-uclinux. Don't use PIC by default on
xtensa-uclinux.

gcc/
2018-11-05  Max Filippov  <jcmvbkbc@gmail.com>

* config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265823 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUpdate most of libquadmath/math/ from glibc, automate update (PR libquadmath/68686).
jsm28 [Mon, 5 Nov 2018 23:03:55 +0000 (23:03 +0000)] 
Update most of libquadmath/math/ from glibc, automate update (PR libquadmath/68686).

libquadmath sources are mostly based on glibc sources at present, but
derived from them by a manual editing / substitution process and with
subsequent manual merges.  The manual effort involved in merges means
they are sometimes incomplete and long-delayed.

Since libquadmath was first created, glibc's support for this format
has undergone significant changes so that it can also be used in glibc
to provide *f128 functions for the _Float128 type from TS 18661-3.
This makes it significantly easier to use it for libquadmath in a more
automated fashion, since glibc has a float128_private.h header that
redefines many identifiers as macros as needed for building *f128
functions.

Simply using float128_private.h directly in libquadmath, with
unmodified glibc sources except for changing function names in that
one header to be *q instead of *f128, would be tricky, given its
dependence on lots of other glibc-internal headers (whereas
libquadmath supports non-glibc systems), and also given how some libm
functions in glibc are built from type-generic templates using a
further set of macros rather than from separate function
implementations for each type.

So instead this patch adds a script update-quadmath.py to convert
glibc sources into libquadmath ones, and the script reads
float128_private.h to identify many of the substitutions it should
make.  quadmath-imp.h is updated with various new internal
definitions, taken from glibc as needed; this is the main place
expected to need updating manually when subsequent merges from glibc
are done using the script.  No attempt is made to make the script
output match the details of existing formatting, although the
differences are of a size that makes a rough comparison (ignoring
whitespace) possible.

Two new public interfaces are added to libquadmath, exp2q and
issignalingq, at a new QUADMATH_1.2 symbol version, since those
interfaces are used internally by some of the glibc sources being
merged into libquadmath; although there is a new symbol version, no
change however is made to the libtool version in the libtool-version
file.  Although there are various other interfaces now in glibc libm
but not in libquadmath, this patch does nothing to add such interfaces
(although adding many of them would in fact be easy to do, given the
script).

One internal file (not providing any public interfaces),
math/isinf_nsq.c, is removed, as no longer used by anything in
libquadmath after the merge.

Conditionals in individual source files on <fenv.h> availability or
features are moved into quadmath-imp.h (providing trivial macro
versions of the functions if real implementations aren't available),
to simplify the substitutions in individual source files.  Note
however that I haven't tested for any configurations lacking <fenv.h>,
so further changes could well be needed there.

Two files in libquadmath/math/ are based on glibc sources but not
updated in this patch: fmaq.c and rem_pio2q.c.  Both could be updated
after further changes to the script (and quadmath-imp.h as needed); in
the case of rem_pio2q.c, based on two separate glibc source files,
those separate files would naturally be split out into separate
libquadmath source files in the process (as done in this patch with
expq_table.h and tanq_kernel.c, where previously two glibc source
files had been merged into one libquadmath source file).  complex.c,
nanq.c and sqrtq.c are not based on glibc sources (though four of the
(trivial) functions in complex.c could readily be replaced by instead
using the four corresponding files from glibc, if desired).

libquadmath also has printf/ and strtod/ sources based on glibc, also
mostly not updated for a long time.  Again the script could no doubt
be made to generate those automatically, although that would be a
larger change (effectively some completely separate logic in the
script, not sharing much if anything with the existing code).

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

PR libquadmath/68686
* Makefile.am: (libquadmath_la_SOURCES): Remove math/isinf_nsq.c.
Add math/exp2q.c math/issignalingq.c math/lgammaq_neg.c
math/lgammaq_product.c math/tanq_kernel.c math/tgammaq_product.c
math/casinhq_kernel.c.
* Makefile.in: Regenerate.
* libquadmath.texi (exp2q, issignalingq): Document.
* quadmath-imp.h: Include <errno.h>, <limits.h>, <stdbool.h> and
<fenv.h>.
(HIGH_ORDER_BIT_IS_SET_FOR_SNAN, FIX_FLT128_LONG_CONVERT_OVERFLOW)
(FIX_FLT128_LLONG_CONVERT_OVERFLOW, __quadmath_kernel_tanq)
(__quadmath_gamma_productq, __quadmath_gammaq_r)
(__quadmath_lgamma_negq, __quadmath_lgamma_productq)
(__quadmath_lgammaq_r, __quadmath_kernel_casinhq, mul_splitq)
(math_check_force_underflow_complex, __glibc_likely)
(__glibc_unlikely, struct rm_ctx, SET_RESTORE_ROUNDF128)
(libc_feholdsetround_ctx, libc_feresetround_ctx): New.
(feraiseexcept, fenv_t, feholdexcept, fesetround, feupdateenv)
(fesetenv, fetestexcept, feclearexcept): Define if not supported
through <fenv.h>.
(__quadmath_isinf_nsq): Remove.
* quadmath.h (exp2q, issignalingq): New.
* quadmath.map (QUADMATH_1.2): New.
* quadmath_weak.h (exp2q, issignalingq): New.
* update-quadmath.py: New file.
* math/isinf_nsq.c: Remove file.
* math/casinhq_kernel.c, math/exp2q.c, math/expq_table.h,
math/issignalingq.c, math/lgammaq_neg.c, math/lgammaq_product.c,
math/tanq_kernel.c, math/tgammaq_product.c: New files.  Generated
from glibc sources with update-quadmath.py.
* math/acoshq.c, math/acosq.c, math/asinhq.c, math/asinq.c,
math/atan2q.c, math/atanhq.c, math/atanq.c, math/cacoshq.c,
math/cacosq.c, math/casinhq.c, math/casinq.c, math/catanhq.c,
math/catanq.c, math/cbrtq.c, math/ccoshq.c, math/ceilq.c,
math/cexpq.c, math/cimagq.c, math/clog10q.c, math/clogq.c,
math/conjq.c, math/copysignq.c, math/coshq.c, math/cosq.c,
math/cosq_kernel.c, math/cprojq.c, math/crealq.c, math/csinhq.c,
math/csinq.c, math/csqrtq.c, math/ctanhq.c, math/ctanq.c,
math/erfq.c, math/expm1q.c, math/expq.c, math/fabsq.c,
math/fdimq.c, math/finiteq.c, math/floorq.c, math/fmaxq.c,
math/fminq.c, math/fmodq.c, math/frexpq.c, math/hypotq.c,
math/ilogbq.c, math/isinfq.c, math/isnanq.c, math/j0q.c,
math/j1q.c, math/jnq.c, math/ldexpq.c, math/lgammaq.c,
math/llrintq.c, math/llroundq.c, math/log10q.c, math/log1pq.c,
math/log2q.c, math/logbq.c, math/logq.c, math/lrintq.c,
math/lroundq.c, math/modfq.c, math/nearbyintq.c,
math/nextafterq.c, math/powq.c, math/remainderq.c, math/remquoq.c,
math/rintq.c, math/roundq.c, math/scalblnq.c, math/scalbnq.c,
math/signbitq.c, math/sincos_table.c, math/sincosq.c,
math/sincosq_kernel.c, math/sinhq.c, math/sinq.c,
math/sinq_kernel.c, math/tanhq.c, math/tanq.c, math/tgammaq.c,
math/truncq.c, math/x2y2m1q.c: Regenerate from glibc sources with
update-quadmath.py.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265822 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agocombine: Don't make an intermediate reg for assigning to sfp (PR87871)
segher [Mon, 5 Nov 2018 21:18:22 +0000 (21:18 +0000)] 
combine: Don't make an intermediate reg for assigning to sfp (PR87871)

The code with an intermediate register is perfectly fine, but LRA
apparently cannot handle the resulting code, or perhaps something else
is wrong.  In either case, making an extra temporary will not likely
help here, so let's just skip it.

PR rtl-optimization/87871
* combine.c (make_more_copies): Skip if dest is frame_pointer_rtx.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265821 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago compiler: handle abstract type in builtin numeric const value
ian [Mon, 5 Nov 2018 21:02:07 +0000 (21:02 +0000)] 
compiler: handle abstract type in builtin numeric const value

    Builtin_call_expression::do_numeric_constant_value can be called by
    Array_type::verify_length before the determine types pass, so accept
    an abstract type.

    Test case is https://golang.org/cl/147537.

    Fixes golang/go#28601

    Reviewed-on: https://go-review.googlesource.com/c/147442

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265820 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix sanitizer frame unwind on 32-bit ABIs (again)
segher [Mon, 5 Nov 2018 19:41:29 +0000 (19:41 +0000)] 
Fix sanitizer frame unwind on 32-bit ABIs (again)

This re-applies r258525, and this time adds it to LOCAL_PATCHES.

libsanitizer/
* LOCAL_PATCHES: Add r258525.
* sanitizer_common/sanitizer_stacktrace.cc
(BufferedStackTrace::FastUnwindStack): Use the correct frame offset
for PowerPC SYSV ABI.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265817 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * lib/target-supports.exp: Add check for "inf" effective target
pkoning [Mon, 5 Nov 2018 19:36:16 +0000 (19:36 +0000)] 
* lib/target-supports.exp: Add check for "inf" effective target
keyword.
* gcc.dg/builtins-44.c: Skip if no infinite support.
* gcc.dg/builtins-45.c: Ditto.
* gcc.dg/torture/builtin-complex-1.c: Ditto.
* gcc.dg/torture/builtin-cproj-1.c: Ditto.
* gcc.dg/torture/builtin-frexp-1.c: Ditto.
* gcc.dg/torture/builtin-ldexp-1.c: Ditto.
* gcc.dg/torture/builtin-logb-1.c: Ditto.
* gcc.dg/torture/builtin-math-2.c: Ditto.
* gcc.dg/torture/builtin-math-5.c: Ditto.
* gcc.dg/torture/builtin-math-7.c: Ditto.
* gcc.dg/torture/builtin-modf-1.c: Ditto.
* gcc.dg/torture/type-generic-1.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265816 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * doc/sourcebuild.texi (target attributes): Document new "inf"
pkoning [Mon, 5 Nov 2018 19:34:59 +0000 (19:34 +0000)] 
* doc/sourcebuild.texi (target attributes): Document new "inf"
effective target keyword.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265815 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Increase register move costs for CC_REGS
rdapp [Mon, 5 Nov 2018 16:42:43 +0000 (16:42 +0000)] 
S/390: Increase register move costs for CC_REGS

This increases the move costs for moves involving the CC
register which saves us some instructions in SPEC CPU2006.

gcc/ChangeLog:

2018-11-05  Robin Dapp  <rdapp@linux.ibm.com>

* config/s390/s390.c (s390_register_move_cost): Increase costs for
        moves involving the CC reg.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265814 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Make tests expect column numbers in RTL output
iii [Mon, 5 Nov 2018 16:34:32 +0000 (16:34 +0000)] 
S/390: Make tests expect column numbers in RTL output

RTL output now includes column numbers in addition to line numbers,
like this:

  "gcc/testsuite/gcc.target/s390/md/andc-splitter-1.c":16:1

This confuses some S/390 tests.

gcc/testsuite/ChangeLog:

2018-11-05  Ilya Leoshkevich  <iii@linux.ibm.com>

* gcc.target/s390/md/andc-splitter-1.c: Add colon to
expectations.
* gcc.target/s390/md/andc-splitter-2.c: Likewise.
* gcc.target/s390/md/setmem_long-1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265813 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-05 Richard Biener <rguenther@suse.de>
rguenth [Mon, 5 Nov 2018 14:55:53 +0000 (14:55 +0000)] 
2018-11-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87873
* tree-ssa-loop-manip.h (split_loop_exit_edge): Add copy_constants_p
argument.
* tree-ssa-loop-manip.c (split_loop_exit_edge): Likewise.
* tree-vect-loop.c (vect_transform_loop): When splitting the
loop exit also create forwarder PHIs for constants.
* tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
Handle constant to_arg, add extra checking we match up the correct
PHIs.

* gcc.dg/pr87873.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265812 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDo not use %zu format in libcpp.
marxin [Mon, 5 Nov 2018 14:32:13 +0000 (14:32 +0000)] 
Do not use %zu format in libcpp.

2018-11-05  Martin Liska  <mliska@suse.cz>

* symtab.c (ht_dump_statistics): Replace %zu with %lu format.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265811 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix printf call in symtab.c.
marxin [Mon, 5 Nov 2018 14:25:37 +0000 (14:25 +0000)] 
Fix printf call in symtab.c.

2018-11-05  Martin Liska  <mliska@suse.cz>

* symtab.c (ht_dump_statistics): Fix format and
pass missing argument.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265810 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Add loc patterns for QImode and HImode
rdapp [Mon, 5 Nov 2018 14:18:21 +0000 (14:18 +0000)] 
S/390: Add loc patterns for QImode and HImode

This adds QImode and HImode support to load on condition.

gcc/ChangeLog:

2018-11-05  Robin Dapp  <rdapp@linux.ibm.com>

* config/s390/s390.md: QImode and HImode for load on condition.

gcc/testsuite/ChangeLog:

2018-11-05  Robin Dapp  <rdapp@linux.ibm.com>

* gcc.target/s390/ifcvt-one-insn-bool.c: New test.
* gcc.target/s390/ifcvt-one-insn-char.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265808 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Allow immediates in loc expander
rdapp [Mon, 5 Nov 2018 14:09:28 +0000 (14:09 +0000)] 
S/390: Allow immediates in loc expander

This allows immediate operands for load on condition.

gcc/ChangeLog:

2018-11-05  Robin Dapp  <rdapp@linux.ibm.com>

* config/s390/predicates.md: Fix typo.
* config/s390/s390.md: Allow immediates for load on condition.

gcc/testsuite/ChangeLog:

2018-11-05  Robin Dapp  <rdapp@linux.ibm.com>

* gcc.dg/loop-8.c: On s390, always run the test with -march=zEC12.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265804 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoCome up with SIZE_AMOUNT and use it in memory statistics and sort stats.
marxin [Mon, 5 Nov 2018 13:36:29 +0000 (13:36 +0000)] 
Come up with SIZE_AMOUNT and use it in memory statistics and sort stats.

2018-11-05  Martin Liska  <mliska@suse.cz>

* alloc-pool.h (struct pool_usage): Use SIZE_AMOUNT.
* bitmap.h (struct bitmap_usage): Likewise.
* ggc-common.c (SCALE): Remove.
(LABEL): Likewise.
(struct ggc_usage): Use SIZE_AMOUNT. And update
compare method.
* ggc-page.c (SCALE): Remove.
(STAT_LABEL): Remove.
(ggc_print_statistics): Use SIZE_AMOUNT.
* gimple.h (SCALE): Remove.
(LABEL): Likewise.
* input.c (ONE_K): Remove.
(ONE_M): Likewise.
(SCALE): Likewise.
(STAT_LABEL): Likewise.
(FORMAT_AMOUNT): Likewise.
(dump_line_table_statistics): Use SIZE_AMOUNT.
* mem-stats.h (struct mem_usage): Likewise.
* rtl.c (dump_rtx_statistics): Likewise.
(rtx_alloc_counts): Change type to size_t.
(rtx_alloc_sizes): Likewise.
(rtx_count_cmp): New.
(dump_rtx_statistics): Sort first based on counts.
* tree.c (tree_nodes_cmp): New.
(tree_codes_cmp): New.
(dump_tree_statistics): Sort first based on counts.
* system.h (ONE_K): New.
(ONE_M): Likewise.
(SIZE_SCALE): Likewise.
(SIZE_LABEL): Likewise.
(SIZE_AMOUNT): Likewise.
* tree-cfg.c (dump_cfg_stats): Use SIZE_AMOUNT.
* tree-dfa.c (dump_dfa_stats): Likewise.
* tree-phinodes.c (phinodes_print_statistics): Likewise.
* tree-ssanames.c (ssanames_print_statistics): Likewise.
* tree.c (dump_tree_statistics): Likewise.
* vec.c (struct vec_usage): Likewise.
* trans-mem.c (tm_mangle): Enlarge buffer in order to not
trigger a -Werror=format-overflow with
--enable-gather-detailed-stats.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265800 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix vector memory statistics.
marxin [Mon, 5 Nov 2018 13:35:56 +0000 (13:35 +0000)] 
Fix vector memory statistics.

2018-11-05  Martin Liska  <mliska@suse.cz>

* mem-stats.h (mem_alloc_description::release_instance_overhead):
Return T *.
* vec.c (struct vec_usage): Register m_element_size.
(vec_prefix::register_overhead): New arguments: elements and
element_size.
(vec_prefix::release_overhead): Subtract elements.
* vec.h (struct vec_prefix): Change signature.
(va_heap::reserve): Pass proper arguments.
(va_heap::release): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265799 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix GNU coding style.
marxin [Mon, 5 Nov 2018 13:35:38 +0000 (13:35 +0000)] 
Fix GNU coding style.

2018-11-05  Martin Liska  <mliska@suse.cz>

* mem-stats.h (mem_alloc_description::get_list): Fix GNU coding
style.
* vec.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265798 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix string pool statistics.
marxin [Mon, 5 Nov 2018 13:35:09 +0000 (13:35 +0000)] 
Fix string pool statistics.

2018-11-05  Martin Liska  <mliska@suse.cz>

* symtab.c (ht_dump_statistics): Make dump conditional
based on alloc_subobject.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265797 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix build on sparc64-linux-gnu.
marxin [Mon, 5 Nov 2018 13:34:36 +0000 (13:34 +0000)] 
Fix build on sparc64-linux-gnu.

2018-11-05  Martin Liska  <mliska@suse.cz>

PR sanitizer/87860
* sanitizer_common/sanitizer_linux.cc:  Cherry-pick upstream
r346129.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265796 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-05 Richard Biener <rguenther@suse.de>
rguenth [Mon, 5 Nov 2018 11:11:04 +0000 (11:11 +0000)] 
2018-11-05  Richard Biener  <rguenther@suse.de>

* tree-scalar-evolution.h (final_value_replacement_loop): Update
prototype.
* tree-scalar-evolution.c (final_value_replacement_loop): Return
whether anything was done.
(scev_const_prop): Remove constant propagation part, fold
remains into ...
* tree-ssa-loop.c (pass_scev_cprop::execute): ... here.
(pass_data_scev_cprop): TODO_cleanup_cfg is now done
conditionally.

* gcc.dg/pr41488.c: Scan ivcanon dump instead of sccp one.
* gcc.dg/tree-ssa/scev-7.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265795 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR tree-optimization/87859
jakub [Mon, 5 Nov 2018 10:28:19 +0000 (10:28 +0000)] 
PR tree-optimization/87859
* gimple-ssa-store-merging.c (struct merged_store_group): Add
only_constants and first_nonmergeable_order members.
(merged_store_group::merged_store_group): Initialize them.
(merged_store_group::do_merge): Clear only_constants member if
adding something other than INTEGER_CST store.
(imm_store_chain_info::coalesce_immediate_stores): Don't merge
stores with order >= first_nonmergeable_order.  Use
merged_store->only_constants instead of always recomputing it.
Set merged_store->first_nonmergeable_order if we've skipped any
stores.  Attempt to merge overlapping INTEGER_CST stores that
we would otherwise skip.

* gcc.dg/store_merging_24.c: New test.
* gcc.dg/store_merging_25.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265794 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR sanitizer/87837
jakub [Mon, 5 Nov 2018 10:27:13 +0000 (10:27 +0000)] 
PR sanitizer/87837
* match.pd (X + Y < X): Don't optimize if TYPE_OVERFLOW_SANITIZED.

* c-c++-common/ubsan/pr87837.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265793 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-05 Xuepeng Guo <xuepeng.guo@intel.com>
xguo [Mon, 5 Nov 2018 09:51:09 +0000 (09:51 +0000)] 
2018-11-05  Xuepeng Guo  <xuepeng.guo@intel.com>

PR target/87853
* config/i386/emmintrin.h (__v16qs): New to cope with option
-funsigned-char.
(_mm_cmpeq_epi8): Replace __v16qi with __v16qs.
(_mm_cmplt_epi8): Likewise.
(_mm_cmpgt_epi8): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265792 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-05 Richard Biener <rguenther@suse.de>
rguenth [Mon, 5 Nov 2018 08:04:49 +0000 (08:04 +0000)] 
2018-11-05  Richard Biener  <rguenther@suse.de>

PR rtl-optimization/87852
* fwprop.c (use_killed_between): Only consider single-defs of the
use whose definition statement dominates the use.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265791 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Implement UDL changes from P0732R2.
jason [Mon, 5 Nov 2018 07:47:05 +0000 (07:47 +0000)] 
Implement UDL changes from P0732R2.

Implementing the UDL changes was pretty straightforward; I simplified
cp_parser_userdef_string_literal using the releasing_vec type from mangle.c.

While looking at this, I realized that the string UDL template taking a
character pack that we implemented for C++14 didn't actually make it into
C++14, so I've added a pedwarn for it and no longer suggest it in the
diagnostic about an invalid UDL template.

* cp-tree.h (struct releasing_vec): Move from mangle.c.
Add get_ref method.
* parser.c (cp_parser_userdef_string_literal): Use it.  Handle
passing the string to a single template parameter of class type.
(cp_parser_template_declaration_after_parameters): Allow it.
Pedwarn about the character pack template that was proposed but not
accepted for C++14, and don't suggest it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265790 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Implement P0732R2, class types in non-type template parameters.
jason [Mon, 5 Nov 2018 07:47:02 +0000 (07:47 +0000)] 
Implement P0732R2, class types in non-type template parameters.

There is one significant piece of this that is not implemented yet: the
reliance on defaulted operator<=>, which someone else has been working on.
So, for the moment those lines are commented out of the testcases.

One tricky bit was treating template parameters of classtype as const
lvalues without making their decltype const; for this I used a
VIEW_CONVERT_EXPR wrapper, which previously could only appear in templates
as location wrappers.

The user-defined literal parts of P0732R2 are in the next patch.

gcc/cp/
* error.c (dump_simple_decl): Look through a template parm object.
* mangle.c (write_template_arg): Likewise.
(mangle_template_parm_object): New.
* pt.c (template_parm_object_p, get_template_parm_object): New.
(invalid_tparm_referent_p): Factor from convert_nontype_argument.
(convert_nontype_argument, invalid_nontype_parm_type_p): Handle
class-type template arguments.
* tree.c (lvalue_kind): Likewise.
gcc/c-family/
* c-cppbuiltin.c (c_cpp_builtins): Add
__cpp_nontype_template_parameter_class.
libiberty/
* cp-demangle.c (d_dump, d_make_comp, d_count_templates_scopes)
(d_print_comp_inner): Handle DEMANGLE_COMPONENT_TPARM_OBJ.
(d_special_name): Handle TA.
(d_expresion_1): Fix demangling of brace-enclosed initializer list.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_TPARM_OBJ.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265789 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix various latent issues revealed by P0732 work.
jason [Mon, 5 Nov 2018 07:46:57 +0000 (07:46 +0000)] 
Fix various latent issues revealed by P0732 work.

The initialized_type hunk fixes handling of void AGGR_INIT_EXPRs that call a
non-constructor; an AGGR_INIT_EXPR can have void type if its initialization
semantics are more complicated than just expanding the call.

The cxx_eval_vec_init_1 hunk corrects AGGR_INIT_EXPRs that were
nonsensically built to initialize an object of void type.  And the
build_aggr_init_expr hunk makes sure we don't do that again.

The ocp_convert and cxx_eval_outermost_constant_expr hunks deal with making
sure that a constant CONSTRUCTOR has the right type.

* cvt.c (ocp_convert): Don't wrap a CONSTRUCTOR in a NOP_EXPR.
* constexpr.c (initialized_type): Fix AGGR_INIT_EXPR handling.
(cxx_eval_vec_init_1): Correct type of AGGR_INIT_EXPR.
(cxx_eval_outermost_constant_expr): Make sure a CONSTRUCTOR has the
right type.  Don't wrap a CONSTRUCTOR if one was passed in.
* tree.c (build_aggr_init_expr): Check for void.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265788 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/60503 - wrong lambda attribute syntax.
jason [Mon, 5 Nov 2018 07:46:52 +0000 (07:46 +0000)] 
PR c++/60503 - wrong lambda attribute syntax.

This patch fixes two issues with lambda attribute handling: First, it was in
the wrong place in the grammar.  Second, it was treating attributes as
applying to the whole declaration rather than to the function type, as
specified by the standard.

* parser.c (cp_parser_lambda_declarator_opt): Fix attribute
handling.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265787 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRemove options that are not disabled with -Os (PR web/87829).
marxin [Mon, 5 Nov 2018 07:33:58 +0000 (07:33 +0000)] 
Remove options that are not disabled with -Os (PR web/87829).

2018-11-05  Martin Liska  <mliska@suse.cz>

PR web/87829
* doc/invoke.texi: Remove options that are
not disabled with -Os.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265786 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoVerify that last argument of __builtin_expect_with_probability is a real cst (PR...
marxin [Mon, 5 Nov 2018 07:33:30 +0000 (07:33 +0000)] 
Verify that last argument of __builtin_expect_with_probability is a real cst (PR c/87811).

2018-11-05  Martin Liska  <mliska@suse.cz>

PR c/87811
* predict.c (expr_expected_value_1): Verify
that last argument is a real constants and emit
error.
2018-11-05  Martin Liska  <mliska@suse.cz>

PR c/87811
* gcc.dg/pr87811.c: New test.
* gcc.dg/pr87811-2.c: Likewise.
* gcc.dg/pr87811-3.c: Likewise.
2018-11-05  Martin Liska  <mliska@suse.cz>

PR c/87811
* doc/extend.texi: Update constrain about the last argument
of __builtin_expect_with_probability.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265785 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix setting of hotness in non-LTO mode (PR gcov-profile/77698).
marxin [Mon, 5 Nov 2018 07:32:48 +0000 (07:32 +0000)] 
Fix setting of hotness in non-LTO mode (PR gcov-profile/77698).

2018-11-05  Martin Liska  <mliska@suse.cz>

PR gcov-profile/77698
* ipa-profile.c (ipa_profile): Adjust hotness threshold
only in LTO mode.
2018-11-05  Martin Liska  <mliska@suse.cz>

PR gcov-profile/77698
* gcc.dg/tree-prof/pr77698.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265784 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Mon, 5 Nov 2018 00:16:57 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265783 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMerge dmd upstream 6243fa6d2
ibuclaw [Sun, 4 Nov 2018 23:34:44 +0000 (23:34 +0000)] 
Merge dmd upstream 6243fa6d2

This introduces a new header that pulls in system includes for use only
in the DMD front-end part of the compiler, fixing up uses of problematic
functions that are prevalent throughout the code.

Commits merged from dmd.

    Fix build of the D frontend on the Hurd and KFreeBSD.
    Initial patch from Matthias Klose.
    https://github.com/dlang/dmd/pull/8893

    Don't care about D/C++ compatibility in C++ port.
    Fixes build error in https://gcc.gnu.org/PR87788
    https://github.com/dlang/dmd/pull/8895

    Allow compiling front-end headers with strict warnings.
    https://github.com/dlang/dmd/pull/8909

    Add root/system.h header for wrapping system includes.
    Fixes https://gcc.gnu.org/PR87865
    https://github.com/dlang/dmd/pull/8910

    Move checkedint to dmd/root.
    https://github.com/dlang/dmd/pull/8912

    Use rmem instead of libc for malloc() and strdup().
    https://github.com/dlang/dmd/pull/8913

    Use align(8) for alignment of UnionExp, fixing several BUS errors
    due to alignment issues on SPARC.
    https://github.com/dlang/dmd/pull/8914

    Don't pass NULL pointer as format parameter to errorSupplemental.
    https://github.com/dlang/dmd/pull/8916

gcc/d/ChangeLog:

2018-11-05  Iain Buclaw  <ibuclaw@gdcproject.org>

PR d/87865
* d-system.h: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265780 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc:
edlinger [Sun, 4 Nov 2018 19:51:09 +0000 (19:51 +0000)] 
gcc:
2018-11-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/86572
        * builtins.c (c_strlen): Handle negative offsets in a safe way.

testsuite:
2018-11-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/86572
        * gcc.dg/pr86572.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265778 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc:
edlinger [Sun, 4 Nov 2018 19:46:08 +0000 (19:46 +0000)] 
gcc:
2018-11-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/87672
        * gimple-fold.c (gimple_fold_builtin_stxcpy_chk): Gimplify.
        * tree-ssa-strlen.c (handle_builtin_strcat): Adjust object size.

testsuite:
2018-11-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/87672
        * gcc.dg/pr87672.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265777 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR middle-end/58372
uros [Sun, 4 Nov 2018 19:22:50 +0000 (19:22 +0000)] 
PR middle-end/58372
* cfgexpand.c (pass_expand::execute): Move the call to
finish_eh_generation in front of the call to expand_stack_alignment.

testsuite/ChangeLog:

PR middle-end/58372
* g++.target/i386/pr58372.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265776 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoEnable support for next generation AMD Zen CPU, via -march=znver2.
vekumar [Sun, 4 Nov 2018 11:17:54 +0000 (11:17 +0000)] 
Enable support for next generation AMD Zen CPU, via -march=znver2.

gcc/ChangeLog:
* common/config/i386/i386-common.c (processor_alias_table): Add znver2 entry.
* config.gcc (i[34567]86-*-linux* | ...): Add znver2.
(case ${target}): Add znver2.
* config/i386/driver-i386.c: (host_detect_local_cpu): Let
-march=native recognize znver2 processors.
* config/i386/i386-c.c (ix86_target_macros_internal): Add znver2.
* config/i386/i386.c (m_znver2): New definition.
(m_ZNVER): New definition.
(m_AMD_MULTIPLE): Includes m_znver2.
(processor_cost_table): Add znver2 entry.
(processor_target_table): Add znver2 entry.
(get_builtin_code_for_version): Set priority for
PROCESSOR_ZNVER2.
(processor_model): Add M_AMDFAM17H_ZNVER2.
(arch_names_table): Ditto.
(ix86_reassociation_width): Include znver2.
* config/i386/i386.h (TARGET_znver2): New definition.
(struct ix86_size_cost): Add TARGET_ZNVER2.
(enum processor_type): Add PROCESSOR_ZNVER2.
* config/i386/i386.md (define_attr "cpu"): Add znver2.
* config/i386/x86-tune-costs.h: (processor_costs) Add znver2 costs.
* config/i386/x86-tune-sched.c: (ix86_issue_rate): Add znver2.
(ix86_adjust_cost): Add znver2.
* config/i386/x86-tune.def:  Replace m_ZNVER1 by m_ZNVER
* gcc/doc/extend.texi: Add details about znver2.
* gcc/doc/invoke.texi: Add details about znver2.

libgcc/ChangeLog
* config/i386/cpuinfo.c: (get_amd_cpu): Add znver2.
* config/i386/cpuinfo.h(processor_subtypes): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265775 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-04 Stafford Horne <shorne@gmail.com>
shorne [Sun, 4 Nov 2018 09:07:48 +0000 (09:07 +0000)] 
2018-11-04  Stafford Horne  <shorne@gmail.com>

* MAINTAINERS (Write After Approval): Add myself.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265774 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sun, 4 Nov 2018 00:16:44 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265773 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-03 Sandra Loosemore <sandra@codesourcery.com>
sandra [Sat, 3 Nov 2018 18:12:44 +0000 (18:12 +0000)] 
2018-11-03  Sandra Loosemore  <sandra@codesourcery.com>

PR target/87079

gcc/
* config/nios2/nios2.c (nios2_rtx_costs): Recognize <mul>sidi3
pattern.

gcc/testsuite/
* gcc.target/nios2/pr87079-1.c: New.
* gcc.target/nios2/pr87079-2.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265770 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sat, 3 Nov 2018 00:17:46 +0000 (00:17 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265766 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-02 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Fri, 2 Nov 2018 20:20:43 +0000 (20:20 +0000)] 
2018-11-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/46020
    * decl.c (verify_bind_c_sym): Remove unnecessary space
    in error message.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265757 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMove gcc.dg/compat dg-skip-if to *_main.c files
ro [Fri, 2 Nov 2018 19:18:31 +0000 (19:18 +0000)] 
Move gcc.dg/compat dg-skip-if to *_main.c files

* gcc.dg/compat/pr83487-1_y.c: Move dg-skip-if ...
* gcc.dg/compat/pr83487-1_main.c: ... here.
* gcc.dg/compat/struct-by-value-10_main.c,
gcc.dg/compat/struct-by-value-10_x.c,
gcc.dg/compat/struct-by-value-11_main.c,
gcc.dg/compat/struct-by-value-11_x.c,
gcc.dg/compat/struct-by-value-12_main.c,
gcc.dg/compat/struct-by-value-12_x.c,
gcc.dg/compat/struct-by-value-13_main.c,
gcc.dg/compat/struct-by-value-13_x.c,
gcc.dg/compat/struct-by-value-14_main.c,
gcc.dg/compat/struct-by-value-14_x.c,
gcc.dg/compat/struct-by-value-15_main.c,
gcc.dg/compat/struct-by-value-15_x.c,
gcc.dg/compat/struct-by-value-17_main.c,
gcc.dg/compat/struct-by-value-17_x.c,
gcc.dg/compat/struct-by-value-18_main.c,
gcc.dg/compat/struct-by-value-18_x.c,
gcc.dg/compat/struct-by-value-2_main.c,
gcc.dg/compat/struct-by-value-2_x.c,
gcc.dg/compat/struct-by-value-22_main.c,
gcc.dg/compat/struct-by-value-22_x.c,
gcc.dg/compat/struct-by-value-3_main.c,
gcc.dg/compat/struct-by-value-3_x.c,
gcc.dg/compat/struct-by-value-4_main.c,
gcc.dg/compat/struct-by-value-4_x.c,
gcc.dg/compat/struct-by-value-5b_main.c,
gcc.dg/compat/struct-by-value-5b_x.c,
gcc.dg/compat/struct-by-value-6b_main.c,
gcc.dg/compat/struct-by-value-6b_x.c,
gcc.dg/compat/struct-by-value-6b_main.c,
gcc.dg/compat/struct-by-value-7b_x.c,
gcc.dg/compat/struct-by-value-7b_main.c,
gcc.dg/compat/struct-by-value-8_main.c,
gcc.dg/compat/struct-by-value-8_x.c,
gcc.dg/compat/struct-by-value-9_main.c,
gcc.dg/compat/struct-by-value-9_x.c,
gcc.dg/compat/struct-return-2_main.c,
gcc.dg/compat/struct-return-2_x.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265755 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-02 Aaron Sawdey <acsawdey@linux.ibm.com>
acsawdey [Fri, 2 Nov 2018 17:02:38 +0000 (17:02 +0000)] 
2018-11-02  Aaron Sawdey  <acsawdey@linux.ibm.com>

* config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Pay
attention to TARGET_AVOID_XFORM and BYTES_BIG_ENDIAN.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265751 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAlthough there's no fundamental reason why shrink wrapping and
rearnsha [Fri, 2 Nov 2018 13:36:31 +0000 (13:36 +0000)] 
Although there's no fundamental reason why shrink wrapping and
speculation tracking are incompatible, a phase-ordering requirement
(we need to do speculation tracking before the final basic block
clean-up) means that the shrink wrapping pass can undo some of the
changes the speculation tracking pass makes.  The result is that the
tracking, while still safe is less comprehensive than we really want.

So to keep things simple, and because the tracking code is quite
expensive anyway, it seems best to just disable that pass when we are
tracking speculative execution.

 * config/aarch64/aarch64.c (aarch64_override_options): Disable
 shrink-wrapping when -mtrack-speculation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265747 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-02 Richard Biener <rguenther@suse.de>
rguenth [Fri, 2 Nov 2018 11:29:50 +0000 (11:29 +0000)] 
2018-11-02  Richard Biener  <rguenther@suse.de>

* tree-ssa-coalesce.c (struct coalesce_list): Add obstack member.
(pop_cost_one_pair): Do not free pair.
(pop_best_coalesce): Likewise.
(create_coalesce_list): Initialize obstack.
(delete_coalesce_list): Free obstack.
(find_coalesce_pair): Obstack-allocate coalesce pairs.
(add_cost_one_coalesce): Likewise.
(struct live_track): Remove bitmap pointer indirections.
(new_live_track): Adjust.
(delete_live_track): Likewise.
(live_track_remove_partition): Likewise.
(live_track_add_partition): Likewise.
(live_track_live_p): Likewise.
(live_track_process_def): Likewise.
(live_track_clear_base_vars): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265745 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[C++ PATCH] refactor duplicate_decls
nathan [Fri, 2 Nov 2018 11:12:43 +0000 (11:12 +0000)] 
[C++ PATCH] refactor duplicate_decls

https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00085.html
gcc/cp/
* decl.c (duplicate_decls): Refactor checks.
gcc/testsuite/
* g++.dg/lookup/crash6.C: Adjust error
* g++.dg/parse/crash38.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265744 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRemove SPARC HAVE_AS_REGISTER_PSEUDO_OP
ro [Fri, 2 Nov 2018 08:51:04 +0000 (08:51 +0000)] 
Remove SPARC HAVE_AS_REGISTER_PSEUDO_OP

* configure.ac (gcc_cv_as_sparc_register_op): Remove.
* configure: Regenerate.
* config.in: Regenerate.
* config/sparc/sparc.c (sparc_output_scratch_registers): Remove
HAVE_AS_REGISTER_PSEUDO_OP guard.
* config/sparc/sparc.h (ASM_ARCH64_SPEC): Remove
!HAVE_AS_REGISTER_PSEUDO_OP support.
(ASM_DECLARE_REGISTER_GLOBAL): Remove HAVE_AS_REGISTER_PSEUDO_OP
guard.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265743 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix libgphobos.spec in the wrong place with --enable-version-specific-runtime-libs
ibuclaw [Fri, 2 Nov 2018 08:29:50 +0000 (08:29 +0000)] 
Fix libgphobos.spec in the wrong place with --enable-version-specific-runtime-libs

libphobos/ChangeLog:

2018-11-01  Iain Buclaw  <ibuclaw@gdcproject.org>

PR d/87827
* Makefile.in: Rebuild.
* configure: Rebuild.
* configure.ac: Properly set MULTISUBDIR.
* d_rules.am: Set toolexecdir and toolexeclibdir.
* libdruntime/Makefile.in: Rebuild.
* m4/druntime.m4 (DRUNTIME_INSTALL_DIRECTORIES): Add
--enable-version-specific-runtime-libs.
* src/Makefile.in: Rebuild.
* testsuite/Makefile.in: Rebuild.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265742 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago* gcc.c-torture/execute/20010904-2.c: Fix last change.
schwab [Fri, 2 Nov 2018 08:22:59 +0000 (08:22 +0000)] 
* gcc.c-torture/execute/20010904-2.c: Fix last change.
* gcc.dg/Wattributes-10.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265741 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-02 Richard Biener <rguenther@suse.de>
rguenth [Fri, 2 Nov 2018 07:55:49 +0000 (07:55 +0000)] 
2018-11-02  Richard Biener  <rguenther@suse.de>

* dwarf2out.c (build_abbrev_table): Guard lookup_external_ref call
with is_type_die.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265740 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-02 Richard Biener <rguenther@suse.de>
rguenth [Fri, 2 Nov 2018 07:53:48 +0000 (07:53 +0000)] 
2018-11-02  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87776
* tree-ssa-sccvn.c (do_rpo_vn): Do not mark backedges
executable when iterating but running into rpo-vn-max-loop-depth
and not eliding the iteration.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265739 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Fri, 2 Nov 2018 00:17:14 +0000 (00:17 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265738 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of
hubicka [Thu, 1 Nov 2018 23:29:27 +0000 (23:29 +0000)] 
* tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of
TYPE_DECL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265735 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Implement P0846R0, ADL and function templates.
mpolacek [Thu, 1 Nov 2018 22:10:31 +0000 (22:10 +0000)] 
Implement P0846R0, ADL and function templates.
* decl.c (grokfndecl): Allow FUNCTION_DECL in assert.
* lex.c (unqualified_fn_lookup_error): Handle TEMPLATE_ID_EXPR.
* parser.c (cp_parser_postfix_expression): Do ADL for a template-name.
(cp_parser_template_id): Give errors if parsing the template argument
list didn't go well.  Allow FUNCTION_DECL in assert.
(cp_parser_template_name): Consider a name to refer to a template if
it is an unqualified-id followed by a <.  Don't return the identifier
if the decl is a function and dependent.
* pt.c (tsubst_copy) <case OVERLOAD>: Remove assert.

* g++.dg/addr_builtin-1.C: Adjust dg-error.
* g++.dg/cpp2a/fn-template1.C: New test.
* g++.dg/cpp2a/fn-template10.C: New test.
* g++.dg/cpp2a/fn-template11.C: New test.
* g++.dg/cpp2a/fn-template12.C: New test.
* g++.dg/cpp2a/fn-template13.C: New test.
* g++.dg/cpp2a/fn-template14.C: New test.
* g++.dg/cpp2a/fn-template15.C: New test.
* g++.dg/cpp2a/fn-template16.C: New test.
* g++.dg/cpp2a/fn-template2.C: New test.
* g++.dg/cpp2a/fn-template3.C: New test.
* g++.dg/cpp2a/fn-template4.C: New test.
* g++.dg/cpp2a/fn-template5.C: New test.
* g++.dg/cpp2a/fn-template6.C: New test.
* g++.dg/cpp2a/fn-template7.C: New test.
* g++.dg/cpp2a/fn-template8.C: New test.
* g++.dg/cpp2a/fn-template9.C: New test.
* g++.dg/parse/fn-template1.C: New test.
* g++.dg/parse/fn-template2.C: New test.
* g++.dg/parse/template19.C: Adjust dg-error.
* g++.dg/template/pr61745.C: Add target to dg-error.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265734 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Aaron Sawdey <acsawdey@linux.ibm.com>
acsawdey [Thu, 1 Nov 2018 20:41:08 +0000 (20:41 +0000)] 
2018-11-01  Aaron Sawdey  <acsawdey@linux.ibm.com>

* config/rs6000/rs6000-protos.h (rs6000_address_for_fpconvert): Remove
prototype.
* config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem):
Combine with rs6000_address_for_fpconvert.
(rs6000_address_for_fpconvert): Combine with
rs6000_force_indexed_or_indirect_mem.
(rs6000_expand_vector_init): Change function call from
rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem.
* config/rs6000/rs6000.md (floatsi<mode>2_lfiwax): Change call from
rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem.
(floatsi<mode>2_lfiwax_mem): Ditto.
(floatunssi<mode>2_lfiwzx): Ditto.
(floatunssi<mode>2_lfiwzx_mem): Ditto.
(float<QHI:mode><FP_ISA3:mode>2): Ditto.
(floatuns<QHI:mode><FP_ISA3:mode>2): Ditto.
(fix_trunc<mode>si2_stfiwx): Ditto.
(fixuns_trunc<mode>si2_stfiwx): Ditto.
(float_<mode>si2_hw): Ditto.
(floatuns_<mode>si2_hw): Ditto.
* config/rs6000/vsx.md (*vsx_extract_si): Ditto.
(vsx_splat_<mode>): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265733 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-11-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Thu, 1 Nov 2018 20:12:57 +0000 (20:12 +0000)] 
2017-11-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/54613
    * gfortran.dg/findloc_1.f90: Actually commit.
    * gfortran.dg/findloc_2.f90: Actually commit.
    * gfortran.dg/findloc_3.f90: Actually commit.
    * gfortran.dg/findloc_4.f90: Actually commit.
    * gfortran.dg/findloc_5.f90: Actually commit.
    * gfortran.dg/findloc_6.f90: Actually commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265732 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Thu, 1 Nov 2018 19:50:14 +0000 (19:50 +0000)] 
2018-11-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/87782
* frontend-passes.c (constant_string_length): If there is a
substring with a length which cannot be reduced to a constant,
return NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265730 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Paul Thomas <pault@gcc.gnu.org>
pault [Thu, 1 Nov 2018 19:36:08 +0000 (19:36 +0000)] 
2018-11-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/40196
* dependency.c (are_identical_variables): Return false if the
inquiry refs are not the same.
(gfc_ref_needs_temporary_p): Break on an inquiry ref.
* dump_parse_tree.c (show_ref): Show the inquiry ref type.
* expr.c (gfc_free_ref_list): Break on an inquiry ref.
(gfc_copy_ref): Copy the inquiry ref types.
(find_inquiry_ref): New function.
(simplify_const_ref, simplify_ref_chain): Call it. Add new arg
to simplify_ref_chain.
(gfc_simplify_expr): Use the new arg in call to
simplify_ref_chain.
(gfc_get_full_arrayspec_from_expr, gfc_is_coarray): Break on
inquiry ref.
(gfc_traverse_expr): Return true for inquiry ref.
* frontend-passes.c (gfc_expr_walker): Break on inquiry ref.
* gfortran.h : Add enums and union member in gfc_ref to
implement inquiry refs.
* intrinsic.c : Fix white nois.
* match.c (gfc_match_assignment): A constant lavlue is an
error.
* module.c : Add DECL_MIO_NAME for inquiry_type and the mstring
for inquiry_types.
(mio_ref): Handle inquiry refs.
* primary.c (is_inquiry_ref): New function.
(gfc_match_varspec): Handle inquiry refs calling new function.
(gfc_variable_attr): Detect inquiry ref for disambiguation
with components.
(caf_variable_attr): Treat inquiry and substring refs in the
same way.
* resolve.c (find_array_spec): ditto.
(gfc_resolve_substring_charlen): If there is neither a charlen
ref not an inquiry ref, return.
(resolve_ref): Handle inqiry refs as appropriate.
(resolve_allocate_expr): Entities with an inquiry ref cannot be
allocated.
* simplify.c (simplify_bound, simplify_cobound): Punt on
inquiry refs.
* trans-array.c (get_array_ctor_var_strlen): Break on inquiry
ref.
*trans-expr.c (conv_inquiry): New function.
(gfc_conv_variable): Retain the last typespec to pass to
conv_inquiry on detecting an inquiry ref.

2018-11-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/40196
* gfortran.dg/inquiry_part_ref_1.f08: New test.
* gfortran.dg/inquiry_part_ref_2.f90: New test.
* gfortran.dg/inquiry_part_ref_3.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265729 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.c-torture/execute/20010904-1.c: Align 2 if pdp11.
pkoning [Thu, 1 Nov 2018 18:59:40 +0000 (18:59 +0000)] 
* gcc.c-torture/execute/20010904-1.c: Align 2 if pdp11.
* gcc.c-torture/execute/20010904-2.c: Ditto.
* c-c++-common/builtin-arith-overflow-2.c: Skip if pdp11.
* gcc.dg/Walloc-size-larger-than-4.c: Ditto.
* gcc.dg/Walloc-size-larger-than-5.c: Ditto.
* gcc.dg/Walloc-size-larger-than-6.c: Ditto.
* gcc.dg/Walloc-size-larger-than-7.c: Ditto.
* gcc.dg/Walloca-14.c: Ditto.
* gcc.dg/Wlarger-than3.c: Ditto.
* gcc.dg/compat/pr83487-1_y.c: Ditto.
* gcc.dg/compat/struct-by-value-2_x.c: Ditto.
* gcc.dg/compat/struct-by-value-3_x.c: Ditto.
* gcc.dg/compat/struct-by-value-4_x.c: Ditto.
* gcc.dg/compat/struct-by-value-5b_x.c: Ditto.
* gcc.dg/compat/struct-by-value-6b_x.c: Ditto.
* gcc.dg/compat/struct-by-value-7b_x.c: Ditto.
* gcc.dg/compat/struct-by-value-8_x.c: Ditto.
* gcc.dg/compat/struct-by-value-9_x.c: Ditto.
* gcc.dg/compat/struct-by-value-10_x.c: Ditto.
* gcc.dg/compat/struct-by-value-11_x.c: Ditto.
* gcc.dg/compat/struct-by-value-12_x.c: Ditto.
* gcc.dg/compat/struct-by-value-13_x.c: Ditto.
* gcc.dg/compat/struct-by-value-14_x.c: Ditto.
* gcc.dg/compat/struct-by-value-15_x.c: Ditto.
* gcc.dg/compat/struct-by-value-16_x.c: Ditto.
* gcc.dg/compat/struct-by-value-17_x.c: Ditto.
* gcc.dg/compat/struct-by-value-18_x.c: Ditto.
* gcc.dg/compat/struct-by-value-22_x.c: Ditto.
* gcc.dg/compat/struct-return-2_x.c: Ditto.
* gcc.dg/falign-labels-1.c: Ditto.
* gcc.dg/long_branch.c: Ditto.
* gcc.dg/nextafter-1.c: Ditto.
* gcc.dg/pr35045.c: Ditto.
* gcc.dg/pr48616.c: Ditto.
* gcc.dg/pr84100.c: Ditto.
* gcc.dg/tree-ssa/builtin-sprintf-9.c: Ditto.
* gcc.dg/tree-ssa/builtin-sprintf-warn-10.c: Ditto.
* gcc.dg/tree-ssa/builtin-sprintf.c: Ditto.
* gcc.dg/Wattributes-10.c: Expect error if pdp11.
* gcc.dg/attr-alloc_size-11.c: Don't XFAIL if pdp11.
* gcc.dg/builtin-inf-1.c: Add pdp11 to warnings about INF.
* gcc.dg/builtins-1.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265728 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Thu, 1 Nov 2018 18:41:28 +0000 (18:41 +0000)] 
2018-11-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/46020
    * gfortran.dg/bind_c_18.f90: Adjust error message.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265727 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/pdp11/t-pdp11 (LIB2ADD): Add divmod.c.
pkoning [Thu, 1 Nov 2018 18:36:52 +0000 (18:36 +0000)] 
* config/pdp11/t-pdp11 (LIB2ADD): Add divmod.c.
(HOST_LIBGCC2_CFLAGS): Change to optimize for size.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265726 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * g++.dg/cpp1z/constexpr-lambda22.C: New test,
mpolacek [Thu, 1 Nov 2018 18:29:44 +0000 (18:29 +0000)] 
* g++.dg/cpp1z/constexpr-lambda22.C: New test,

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265725 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAvoid stray [] in ia64 assembler test.
jsm28 [Thu, 1 Nov 2018 17:05:17 +0000 (17:05 +0000)] 
Avoid stray [] in ia64 assembler test.

Noted in <https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00034.html>.
Fix by adding extra newline in test input is analogous to many such
newlines added in cases where argument to a newly added AC_LANG_SOURCE
had a preprocessor directive on its last line.

* configure.ac (gcc_cv_as_ia64_ltoffx_ldxmov_relocs): Add newline
at end of assembler input text.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265724 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Jozef Lawrynowicz <jozef.l@mittosystems.com>
jozefl [Thu, 1 Nov 2018 17:02:48 +0000 (17:02 +0000)] 
2018-11-01  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* gcc.dg/tree-ssa/cunroll-13.c: Add missing cast from literal to int32.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265723 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of
hubicka [Thu, 1 Nov 2018 13:03:28 +0000 (13:03 +0000)] 
* tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of
TYPE_DECL.

* g++.dg/lto/pr84805_1.C: Update template.
* g++.dg/lto/pr84805_0.C: Update template.
* g++.dg/lto/pr84805_1b.C: Update template.
* g++.dg/lto/pr84805_0b.C: Update template.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265722 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR tree-optimization/87826
jakub [Thu, 1 Nov 2018 12:31:45 +0000 (12:31 +0000)] 
PR tree-optimization/87826
* gimple-ssa-store-merging.c (do_shift_rotate): Punt if count is
negative or larger or equal to type's precision.

* gcc.dg/pr87826.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265720 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Thu, 1 Nov 2018 12:00:59 +0000 (12:00 +0000)] 
2018-11-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/46020
* decl.c (verify_bind_c_sym): Improve error message.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265719 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Thu, 1 Nov 2018 11:56:26 +0000 (11:56 +0000)] 
2018-11-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/46020
    * gfortran.dg/bind_c_usage_32.f90: Really commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265717 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Thu, 1 Nov 2018 11:55:43 +0000 (11:55 +0000)] 
2018-11-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/46020
    * gfortran.dg/bind_c_usage_7.f90: Adjust error message.
    * gfortran.dg/bind_c_usage_32.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265716 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-10-28 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Thu, 1 Nov 2018 11:37:08 +0000 (11:37 +0000)] 
2018-10-28  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/54613
* gfortran.texi (File format of unformatted sequential files):
Replace random comma with period.
* intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu.
(FINDLOC): Document.
(MAXLOC): Add refrence to FINDLOC.
(MINLOC): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265715 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ABI PATCH] static anonymous unions of function scope
nathan [Thu, 1 Nov 2018 11:18:06 +0000 (11:18 +0000)] 
[ABI PATCH] static anonymous unions of function scope

https://gcc.gnu.org/ml/gcc-patches/2018-10/msg02076.html
* cp-tree.h (struct lang_function): Delete x_local_names field.
(struct lang_decl_base): Rename u2sel to spare.
(struct lang_decl_min): Remove lang_decl_u2 union.  Keep access
field.
(LANG_DECL_U2_CHECK): Delete.
(DECL_DISCRIMINATOR_P): Require function scope.
(DECL_DISCRIMINATOR): Adjust.
(DECL_DISCRIMINATOR_SET_P): Delete.
(DECL_CAPTURED_VARIABLE, DECL_ACCESS, THUnK_VIRTUAL_OFFSET): Adjust.
(local_classes): Don't declare.
(determine_local_discriminator): Declare.
* decl.c (push_local_name): Delete.
(local_entities, determina_local_discrminator): New.
(duplicate_decls): Copy DECL_ACCESS. Fix formatting.
(cp_finish_decl): Use determine_local_discriminator.
(save_function_data): Drop x_local_names.
(finish_function): Drop local_names.
* decl2.c (finish_anon_union): Use determine_local_disciminator.
* mangle.c (write_unnamed_type_name): Use
discriminator_for_local_entity.
(local_class_index): Delete.
(discriminator_for_local_entity): Reimplement.
(write_local_name): Adjust discriminator code.
* name-lookup.c (do_pushtag): Call determine_local_discrimiator.
* semantics.c (finish_omp_threadprivate): Drop DECL_DISCRIMINATOR
handling.
* class.c (local_classes): Delete.
(init_class_processing): Don't init it.

* g++.dg/abi/anon5.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265714 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR d/87824
jakub [Thu, 1 Nov 2018 11:14:08 +0000 (11:14 +0000)] 
PR d/87824
* lang.opt (Wpsabi): New option.

* gdc.dg/simd.d: Add -Wno-psabi.
* gdc.dg/compilable.d: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265713 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMake __PRETTY_FUNCTION__-like functions mergeable string csts (PR c++/64266).
marxin [Thu, 1 Nov 2018 09:19:31 +0000 (09:19 +0000)] 
Make __PRETTY_FUNCTION__-like functions mergeable string csts (PR c++/64266).

2018-11-01  Martin Liska  <mliska@suse.cz>
    Jason Merrill  <jason@redhat.com>

PR c++/64266
PR bootstrap/70422
PR ipa/81277
* cp-tree.h (DECL_FNAME_P): New macro.
* decl.c (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
        DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
(cp_finish_decl):
* lambda.c (is_capture_proxy): Use DECL_FNAME_P.
* pt.c (tsubst_expr): Handle DECL_PRETTY_FUNCTION_P.
2018-11-01  Martin Liska  <mliska@suse.cz>
    Jason Merrill  <jason@redhat.com>

PR c++/64266
PR bootstrap/70422
PR ipa/81277
* g++.dg/cpp0x/constexpr-__func__2.C: Make it a compilation
test.
* g++.old-deja/g++.ext/pretty4.C: Remove as the run-time
assumptions are not longer valid.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265711 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * go-gcc.cc (Gcc_backend::write_global_definitions): Don't call
ian [Thu, 1 Nov 2018 04:21:16 +0000 (04:21 +0000)] 
* go-gcc.cc (Gcc_backend::write_global_definitions): Don't call
gimplify_function_tree.  Instead call allocate_struct_function if
necessary.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265710 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix typo in gcc/ChangeLog
aoliva [Thu, 1 Nov 2018 01:23:20 +0000 (01:23 +0000)] 
Fix typo in gcc/ChangeLog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265709 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogOlogy: skip dbranch at -Og
aoliva [Thu, 1 Nov 2018 01:23:08 +0000 (01:23 +0000)] 
gOlogy: skip dbranch at -Og

Delayed slot filling moves insns without any regard to variable
location notes, causing the location information in them to become
incorrect.

Fixing that appears to be quite difficult, but filling delay slots is
hardly an essential optimization to run at -Og, so if the user wants
to privilege debuggability, skip delay slot filling.

for  gcc/ChangeLog

* opts.c (default_options_table): Do not enable
OPT_fdelayed_branch at -Og.
* doc/invoke.texi (-fdelayed-branch): Document it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265708 138bc75d-0d04-0410-961f-82ee72b054a4