Commit Graph

160885 Commits

Author SHA1 Message Date
H.J. Lu
0ef9f21d3c x86/cet: Use unsigned integer to unwind shadow stack
Use unsigned integer to unwind shadow stack by replacing jle with jbe and
jg with ja.

	PR target/85489
	* config/x86/sjlj.S (GTM_longjmp): Replace jle/jg with jbe/ja.

From-SVN: r259559
2018-04-23 05:29:00 -07:00
Claudiu Zissulescu
9ba5e5fcee [ARC] Fix FLS, SETI patterns.
Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
	enums into a single definition.
	(fls): Fix predicates and printing.
	(seti): Likewise.

From-SVN: r259558
2018-04-23 11:55:14 +02:00
Claudiu Zissulescu
31d2e01ad4 [ARC] Update sleep builtin.
gcc/
2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
	* config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
	and short u6 immediate.
	(check_if_valid_sleep_operand): Remove.
	* config/arc/arc.md (Sleep): Accepts registers and u6 immediates.

changelog

From-SVN: r259557
2018-04-23 11:54:59 +02:00
GCC Administrator
6dfcb0c474 Daily bump.
From-SVN: r259556
2018-04-23 00:16:27 +00:00
Chung-Ju Wu
1311665187 [NDS32] Add new option -malways-save-lp.
gcc/
	* config/nds32/nds32.c (nds32_compute_stack_frame): Consider
	flag_always_save_lp condition.
	* config/nds32/nds32.opt (malways-save-lp): New option.

From-SVN: r259553
2018-04-22 10:10:00 +00:00
Shiva Chen
c411e9aa4f [NDS32] Implment USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT, USE_STORE_POST_DECREMENT and USE_STORE_POST_INCREMENT.
gcc/
	* config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
	* config/nds32/nds32.c (nds32_use_load_post_increment): New.
	* config/nds32/nds32.h
	(USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
	(USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.

From-SVN: r259552
2018-04-22 09:05:10 +00:00
Shiva Chen
029db20edd [NDS32] Remove unused function: nds32_ls_333_p().
gcc/
	* config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
	* config/nds32/nds32.c (nds32_ls_333_p): Remove.

From-SVN: r259551
2018-04-22 08:51:26 +00:00
Shiva Chen
2f1bb3ca91 [NDS32] Refine CASE_VECTOR_SHORTEN_MODE to function.
gcc/
	* config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
	Declare.
	* config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
	* config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259550
2018-04-22 08:42:18 +00:00
Chung-Ju Wu
361292be13 [NDS32] Fix wrong input value of parameter from stack for variable-length function.
gcc/
	* config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.

From-SVN: r259549
2018-04-22 08:25:47 +00:00
Chung-Ju Wu
79498ad8ba [NDS32] Implement DATA_ALIGNMENT, LOCAL_ALIGNMENT and TARGET_CONSTANT_ALIGNMENT.
gcc/
	* config/nds32/nds32-protos.h (nds32_data_alignment,
	nds32_local_alignment): Declare.
	* config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
	nds32_local_alignment): New functions.
	(TARGET_CONSTANT_ALIGNMENT): Define.
	* config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.

From-SVN: r259548
2018-04-22 08:19:38 +00:00
Chung-Ju Wu
50256c75f4 [NDS32] Move some target hooks to the bottom of nds32.c file.
gcc/
	* config/nds32/nds32.c
	(TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
	(TARGET_MODES_TIEABLE_P): Likewise.

From-SVN: r259547
2018-04-22 08:07:08 +00:00
Chung-Ju Wu
10c8bd03e3 [NDS32] Consider -Ofast and -Og in nds32_asm_file_start function.
gcc/
	* config/nds32/nds32.c (nds32_asm_file_start): Display optimization
	level Ofast and Og.

From-SVN: r259546
2018-04-22 07:57:06 +00:00
Monk Chiang
bc8a88100d [NDS32] Add unaligned access support.
gcc/
	* config/nds32/constants.md (unspec_volatile_element): Add enum values
	for unaligned access.
	* config/nds32/nds32-intrinsic.c: Implementation of expanding
	unaligned access.
	* config/nds32/nds32-intrinsic.md: Likewise.
	* config/nds32/nds32_intrinsic.h: Likewise.
	* config/nds32/nds32.h (nds32_builtins): Likewise.
	* config/nds32/nds32.opt (munaligned-access): New option.
	* config/nds32/nds32.c (nds32_asm_file_start): Display
	flag_unaligned_access status.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259545
2018-04-22 07:46:39 +00:00
GCC Administrator
020c350c3c Daily bump.
From-SVN: r259544
2018-04-22 00:16:24 +00:00
Kito Cheng
559fb136c9 RISC-V: Pass --no-relax to linker if -mno-relax is present.
gcc/
	2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
	* config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
	-mno-relax is present.
	* config/riscv/linux.h (LINK_SPEC): Ditto.

From-SVN: r259540
2018-04-20 18:03:30 -07:00
GCC Administrator
f046f4b07c Daily bump.
From-SVN: r259539
2018-04-21 00:16:14 +00:00
Martin Sebor
8cd95cec0f PR c/85365 - -Wrestrict false positives with -fsanitize=undefined
gcc/ChangeLog:

	PR c/85365
	* gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
	for null pointers.
	(gimple_fold_builtin_stxcpy_chk): Same.
	* gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.

gcc/testsuite/ChangeLog:

	PR c/85365
	* gcc.dg/Wrestrict-15.c: New test.

From-SVN: r259535
2018-04-20 17:43:51 -06:00
Michael Meissner
661eb8f9e5 re PR target/85456 (PowerPC: Using -mabi=ieeelongdouble calls wrong function for __builtin_powi.)
[libgcc]
2018-04-20  Michael Meissner  <meissner@linux.ibm.com>

	PR target/85456
	* config/rs6000/_powikf2.c: New file.  Add support for the
	__builtin_powil function when long double is IEEE 128-bit floating
	point.
	* config/rs6000/float128-ifunc.c (__powikf2_resolve): Add
	__powikf2 support.
	(__powikf2): Likewise.
	* config/rs6000/quad-float128.h (__powikf2_sw): Likewise.
	(__powikf2_hw): Likewise.
	(__powikf2): Likewise.
	* config/rs6000/t-float128 (fp128_ppc_funcs): Likewise.
	* config/rs6000/t-float128-hw (fp128_hw_func): Likewise.
	(_powikf2-hw.c): Likewise.

[gcc]
2018-04-20  Michael Meissner  <meissner@linux.ibm.com>

	PR target/85456
	* config/rs6000/rs6000.c (init_float128_ieee): Add support to call
	__powikf2 when long double is IEEE 128-bit.

[gcc/testsuite]
2018-04-20  Michael Meissner  <meissner@linux.ibm.com>

	PR target/85456
	* gcc.target/powerpc/pr85456.c: New test.

From-SVN: r259533
2018-04-20 21:27:08 +00:00
Bill Schmidt
8833e667be undef-bool-1.C: Require lp64.
[gcc/testsuite]

2018-04-20  Bill Schmidt  <wschmidt@linux.ibm.com>

	* g++.dg/ext/undef-bool-1.C: Require lp64.
	* gcc.target/powerpc/undef-bool-2.c: Likewise.

From-SVN: r259532
2018-04-20 21:00:41 +00:00
Ian Lance Taylor
447638d2c4 gotest: only use [TD] on big-endian PPC64 non-AIX systems
Reviewed-on: https://go-review.googlesource.com/108457

From-SVN: r259531
2018-04-20 20:40:27 +00:00
Kito Cheng
9b922d6aaf RISC-V: Make sure stack is always aligned during adjusting stack.
gcc/
	2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
	* config/riscv/riscv.c (riscv_first_stack_step): Round up min
	step to make sure stack always aligned.

From-SVN: r259530
2018-04-20 12:03:19 -07:00
Jeff Law
b593a195f9 stack-check-5.c: Improve dg-skip-if selector for the stack protector.
* gcc.dg/stack-check-5.c: Improve dg-skip-if selector for the
        stack protector.
        * gcc.dg/stack-check-6.c: Likewise.
        * gcc.dg/stack-check-6a.c: Likewise.
        * gcc.target/i386/stack-check-17.c: Add dg-skip-if selector.
        * gcc.target/i386/stack-check-18.c: Likewise.
        * gcc.target/i386/stack-check-19.c: Likewise.

From-SVN: r259528
2018-04-20 11:20:46 -06:00
Kyrylo Tkachov
f04fb28eda Fix missing hunk from previous commit
From-SVN: r259527
2018-04-20 16:33:53 +00:00
Kyrylo Tkachov
db994ead87 PR testsuite/85483: Move aarch64/sve/vcond_1.c test to g++.dg/other/
I totally botched up this sve test file in 259437.
It needs C++, so move it to g++.dg/other and make it a .C file.
Also adds the target guards to prevent it from running on non-aarch64 targets.

Tested that it passes on aarch64-none-elf and doesn't get run on arm-none-eabi.

Committing to trunk as obvious.

	PR testsuite/85483
	* gcc.target/aarch64/sve/vcond_1.c: Move to...
	* g++.dg/other/sve_vcond_1.C: ... Here.  Add target directives.
	* gcc.target/aarch64/sve/vcond_1_run.c: Move to...
	* g++.dg/other/sve_vcond_1_run.C: ... Here.  Change include file name.

From-SVN: r259526
2018-04-20 16:31:19 +00:00
Carl Love
a3b82e156d re PR target/83402 (PPC64 implementation of ./rs6000/emmintrin.h gives out of range for _mm_slli_epi32)
gcc/ChangeLog:

2018-04-20  Carl Love  <cel@us.ibm.com>

        PR target/83402
        * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
        size check for arg0.

From-SVN: r259524
2018-04-20 15:18:24 +00:00
Nathan Sidwell
e91eba31fd [nvptx] Fix calls to vector and worker routines
2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
	    Tom de Vries  <tom@codesourcery.com>

	PR target/85445
	* config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
	Emit insns for calls too.
	(nvptx_find_par): Always look for worker-level predecessor insn.
	(nvptx_propagate): Add is_call parm, return bool.  Copy frame for
	calls.
	(nvptx_vpropagate, nvptx_wpropagate): Adjust.
	(nvptx_process_pars): Propagate frames for calls.

	* testsuite/libgomp.oacc-c++/ref-1.C: New.

Co-Authored-By: Tom de Vries <tom@codesourcery.com>

From-SVN: r259523
2018-04-20 13:46:07 +00:00
H.J. Lu
e95dda951f Define __CET__ for -fcf-protection and remove -mibt
With revision 259496:

commit b1384095a7c1d06a44b70853372ebe037b2f7867
Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Apr 19 15:15:04 2018 +0000

    x86: Enable -fcf-protection with multi-byte NOPs

-mibt does nothing and can be removed.  Define __CET__ to indicate level
protection with -fcf-protection:

(__CET__ & 1) != 0: -fcf-protection=branch or -fcf-protection=full
(__CET__ & 2) != 0: -fcf-protection=return or -fcf-protection=full

gcc/

	PR target/85469
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
	Removed.
	(OPTION_MASK_ISA_IBT_UNSET): Likewise.
	(ix86_handle_option): Don't handle OPT_mibt.
	* config/i386/cet.h: Check __CET__ instead of __IBT__ and
	__SHSTK__.
	* config/i386/driver-i386.c (host_detect_local_cpu): Remove
	has_ibt and ibt.
	* config/i386/i386-c.c (ix86_target_macros_internal): Don't
	check OPTION_MASK_ISA_IBT nor flag_cf_protection.
	(ix86_target_macros): Define __CET__ with flag_cf_protection
	for -fcf-protection.
	* config/i386/i386.c (isa2_opts): Remove -mibt.
	* config/i386/i386.h (TARGET_IBT): Removed.
	(TARGET_IBT_P): Likewise.
	(ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
	* config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
	* config/i386/i386.opt (mcet): Update help message.
	(mshstk): Likewise.
	(mibt): Removed.
	* doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
	-mcet as an alias for -mshstk.

gcc/testsuite/

	PR target/85469
	* gcc.target/i386/pr85044.c (dg-options): Remove -mibt.
	* gcc.target/i386/sse-26.c (dg-options): Remove -mno-ibt.

From-SVN: r259522
2018-04-20 06:30:13 -07:00
Martin Liska
fffefbf85f Do not overflow string buffer (PR objc/85476).
2018-04-20  Martin Liska  <mliska@suse.cz>

	PR objc/85476
	* objc-act.c (finish_class): Do not overflow string buffer.

From-SVN: r259521
2018-04-20 12:55:36 +00:00
Richard Biener
b46ebc6c45 re PR tree-optimization/85475 (Compile time hog w/ -O1 -fpeel-loops)
2018-04-20  Richard Biener <rguenther@suse.de>

	PR middle-end/85475
	* match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
	complexity by forcing a single use of the multiply operand.

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

From-SVN: r259519
2018-04-20 10:31:23 +00:00
Martin Jambor
2f1f3ac438 Fix IPA-CP test for self-feeding recursive dependency
2018-04-20  Martin Jambor  <mjambor@suse.cz>

	ipa/85449
	* ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
	recursion dependency to only apply to non-clones.

testsuite/
	* gcc.dg/ipa/pr85449.c: New test.

From-SVN: r259518
2018-04-20 11:35:33 +02:00
Martin Jambor
5fc1b92025 Check that clones of edges exist during IPA-CP
2018-04-20  Martin Jambor  <mjambor@suse.cz>

	ipa/85447
	* ipa-cp.c (create_specialized_node): Check that clones of
	self-recursive edges exist during IPA-CP.

testsuite/
	* g++.dg/ipa/pr85447.C: New file.
	* gcc.dg/ipa/ipcp-self-recursion-1.c: Likewise.

From-SVN: r259517
2018-04-20 11:19:39 +02:00
Jakub Jelinek
e00e62761d re PR c++/85462 (internal compiler error: in inc_refcount_use, at cp/pt.c:8955)
PR c++/85462
	* cp-tree.h (tinst_level): Remove in_system_header_p member,
	change refcount member from unsigned char to unsigned short,
	add refcount_infinity static data member, adjust comments.
	* pt.c (tinst_level::refcount_infinity): Define.
	(inc_refcount_use): Remove assert, don't increment if refcount
	is already refcount_infinity, adjust comment.
	(dec_refcount_use): Remove assert, don't decrement if refcount
	is refcount_infinity, adjust comment.
	(push_tinst_level_loc): Formatting fix.

	* g++.dg/cpp0x/pr85462.C: New test.

From-SVN: r259516
2018-04-20 09:56:52 +02:00
GCC Administrator
774c08306d Daily bump.
From-SVN: r259515
2018-04-20 00:16:26 +00:00
Toon Moene
b81f7a6137 invoke.texi: Add -floop-unroll-and-jam to options enabled by -O3.
2018-04-19  Toon Moene  <toon@moene.org>

	* doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
	by -O3.

From-SVN: r259509
2018-04-19 19:29:26 +00:00
H.J. Lu
c7cec03345 Require CET target on gcc.target/i386/pr85404.c
Need a working CET assembler to assemble the compiler output.

	* gcc.target/i386/pr85404.c: Require CET target.

From-SVN: r259508
2018-04-19 12:20:37 -07:00
Jakub Jelinek
18108d94e9 re PR tree-optimization/85467 (ICE: verify_gimple failed: non-trivial conversion at assignment with -O2 -fno-tree-ccp --param=sccvn-max-scc-size=10)
PR tree-optimization/85467
	* fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
	VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
	VECTOR_CST element to type.

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

From-SVN: r259507
2018-04-19 21:16:18 +02:00
Paolo Carlini
f62a0ddd73 re PR c++/84611 (ICE in operator[], at vec.h:826 (local_class_index()))
/cp
2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84611
	* pt.c (lookup_template_class_1): Check pushtag return value for
	error_mark_node.

/testsuite
2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84611
	* g++.dg/parse/crash68.C: New.

From-SVN: r259505
2018-04-19 18:09:45 +00:00
H.J. Lu
5707be3c7d libgcc/CET: Skip signal frames when unwinding shadow stack
When -fcf-protection -mcet is used, I got

FAIL: g++.dg/eh/sighandle.C

(gdb) bt
 #0  _Unwind_RaiseException (exc=exc@entry=0x416ed0)
    at /export/gnu/import/git/sources/gcc/libgcc/unwind.inc:140
 #1  0x00007ffff7d9936b in __cxxabiv1::__cxa_throw (obj=<optimized out>,
    tinfo=0x403dd0 <typeinfo for int@@CXXABI_1.3>, dest=0x0)
    at /export/gnu/import/git/sources/gcc/libstdc++-v3/libsupc++/eh_throw.cc:90
 #2  0x0000000000401255 in sighandler (signo=11, si=0x7fffffffd6f8,
    uc=0x7fffffffd5c0)
    at /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:9
 #3  <signal handler called> <<<< Signal frame which isn't on shadow stack
 #4  dosegv ()
    at /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:14
 #5  0x00000000004012e3 in main ()
    at /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:30
(gdb) p frames
$6 = 5
(gdb)

frame count should be 4, not 5.  This patch skips signal frames when
unwinding shadow stack.

gcc/testsuite/

	PR libgcc/85334
	* g++.dg/torture/pr85334.C: New test.

libgcc/

	PR libgcc/85334
	* unwind-generic.h (_Unwind_Frames_Increment): New.
	* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment):
	Likewise.
	* unwind.inc (_Unwind_RaiseException_Phase2): Increment frame
	count with _Unwind_Frames_Increment.
	(_Unwind_ForcedUnwind_Phase2): Likewise.

From-SVN: r259502
2018-04-19 10:05:39 -07:00
Jonathan Wakely
f22723f93d PR c++/85464 - missing location for -Wignored-qualifiers diagnostic
* g++.dg/diagnostic/pr85464.C: New.

From-SVN: r259501
2018-04-19 18:00:37 +01:00
H.J. Lu
5e1e91c4fd i386: Add save_stack_nonlocal and restore_stack_nonlocal
Define STACK_SAVEAREA_MODE to hold both shadow stack and stack pointers.
Replace builtin_setjmp_setup and builtin_longjmp with save_stack_nonlocal
and restore_stack_nonlocal to support both builtin setjmp/longjmp as well
as non-local goto in nested functions.

gcc/

	PR target/85397
	* config/i386/i386.h (STACK_SAVEAREA_MODE): New.
	* config/i386/i386.md (builtin_setjmp_setup): Removed.
	(builtin_longjmp): Likewise.
	(save_stack_nonlocal): New pattern.
	(restore_stack_nonlocal): Likewise.

gcc/testsuite/

	PR target/85397
	* gcc.dg/torture/pr85397-1.c: New test.
	* gcc.target/i386/cet-sjlj-6a.c: Adjusted.
	* gcc.target/i386/cet-sjlj-6b.c: Likewise.

From-SVN: r259500
2018-04-19 09:36:34 -07:00
H.J. Lu
2130a2afe7 x86/cet: Properly output labels in property note section
Replace ASM_OUTPUT_LABEL with fprintf so that internal labels in property
note section are unchanged by -fleading-underscore.

gcc/

	PR target/85404
	* config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
	Replace ASM_OUTPUT_LABEL with fprintf.

gcc/testsuite/

	PR target/85404
	* gcc.target/i386/pr85404.c: New test.

From-SVN: r259498
2018-04-19 08:24:53 -07:00
H.J. Lu
5f9ca0b8bf libgcc/CET: Add _CET_ENDBR to __stack_split_initialize
Program received signal SIGSEGV, Segmentation fault.
__stack_split_initialize ()
    at /export/gnu/import/git/sources/gcc/libgcc/config/i386/morestack.S:751
751		leaq	-16000(%rsp),%rax	# We should have at least 16K.
Missing separate debuginfos, use: dnf debuginfo-install libgcc-8.0.1-0.21.0.fc28.x86_64
(gdb) disass
Dump of assembler code for function __stack_split_initialize:
=> 0x0000000000402858 <+0>:	lea    -0x3e80(%rsp),%rax
   0x0000000000402860 <+8>:	mov    %rax,%fs:0x70
   0x0000000000402869 <+17>:	sub    $0x8,%rsp
   0x000000000040286d <+21>:	mov    %rsp,%rdi
   0x0000000000402870 <+24>:	mov    $0x3e80,%esi
   0x0000000000402875 <+29>:	callq  0x401810 <__generic_morestack_set_initial_sp>
   0x000000000040287a <+34>:	add    $0x8,%rsp
   0x000000000040287e <+38>:	retq
End of assembler dump.
(gdb)

This patch adds the missing ENDBR to __stack_split_initialize.

	PR libgcc/85379
	* config/i386/morestack.S (__stack_split_initialize): Add
	_CET_ENDBR.

From-SVN: r259497
2018-04-19 08:22:27 -07:00
H.J. Lu
73d1e5721d x86: Enable -fcf-protection with multi-byte NOPs
-fcf-protection -mcet can't be used with IFUNC features, like symbol
multiversioning or target clone, since IBT/SHSTK are applied to the whole
program and they may be disabled in some functions.  But -fcf-protection
is implemented with multi-byte NOPs on all 64-bit processors as well as
32-bit processors starting with Pentium Pro.  If -fcf-protection requires
-mcet, IFUNC features can't be used on Linux when -fcf-protection is
enabled by default.

This patch changes -fcf-protection to implement indirect branch and
return address tracking with multi-byte NOPs.  -mibt and -mshstk are
changed to only enable CET built-in functions.  CET tests are updated
to allow -fcf-protection without -mibt, -mshstk and -mcet on x86.
-fcf-protection=none are also added to tests which fail with
-fcf-protection so that -fcf-protection can be added to RUNTESTFLAGS
to verify -fcf-protection implementation.

gcc/

	PR target/85417
	* config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
	Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
	* config/i386/i386-c.c (ix86_target_macros_internal): Also
	define __IBT__ and __SHSTK__ for -fcf-protection.
	* config/i386/i386.c (pass_insert_endbranch::gate): Don't check
	TARGET_IBT.
	(ix86_trampoline_init): Likewise.
	(x86_output_mi_thunk): Likewise.
	(ix86_notrack_prefixed_insn_p): Likewise.
	(ix86_option_override_internal): Don't disallow -fcf-protection.
	* config/i386/i386.md (rdssp<mode>): Also enable for
	-fcf-protection.
	(incssp<mode>): Likewise.
	(nop_endbr): Likewise.
	* config/i386/i386.opt (mcet): Change help message to built-in
	functions only.
	(mibt): Likewise.
	(mshstk): Likewise.
	* doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
	on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
	enable CET built-in functions.

gcc/testsuite/

	PR target/85417
	* c-c++-common/attr-nocf-check-1.c: Compile with
	-fcf-protection=none.
	* c-c++-common/attr-nocf-check-3.c: Likewise.
	* gcc.dg/march-generic.c: Likewise.
	* gcc.target/i386/align-limit.c: Likewise.
	* gcc.target/i386/cet-notrack-icf-1.c: Likewise.
	* gcc.target/i386/cet-notrack-icf-3.c: Likewise.
	* gcc.target/i386/cet-property-2.c: Likewise.
	* gcc.target/i386/ret-thunk-26.c: Likewise.
	* c-c++-common/fcf-protection-1.c: Remove dg-error for x86
	targets.
	* c-c++-common/fcf-protection-2.c: Likewise.
	* c-c++-common/fcf-protection-3.c: Likewise.
	* c-c++-common/fcf-protection-5.c: Likewise.
	* c-c++-common/fcf-protection-6.c: Likewise.
	* c-c++-common/fcf-protection-7.c: Likewise.
	* gcc.target/i386/cet-label-3.c: New test.
	* gcc.target/i386/cet-property-3.c: Likewise.
	* gcc.target/i386/cet-sjlj-7.c: Likewise.
	* gcc.target/i386/pr85417-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-7.c: Also expect
	__x86_indirect_thunk_nt_(r|e)ax
	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
	* gcc.target/i386/pr85403.c: Remove dg-error,

From-SVN: r259496
2018-04-19 08:15:04 -07:00
Sebastian Peryt
37d51c754a i386-common.c (OPTION_MASK_ISA_MOVDIRI_SET, [...]): New defines.
2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>

gcc/

	* common/config/i386/i386-common.c 
	(OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
	OPTION_MASK_ISA_MOVDIRI_UNSET,
	OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
	(ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
	* config.gcc (movdirintrin.h): New header.
	* config/i386/cpuid.h (bit_MOVDIRI,
	bit_MOVDIR64B): New bits.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
	and -mmvodir64b.
	* config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
	(VOID, PVOID, PCVOID)): New function types.
	* config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
	__builtin_ia32_directstoreu_u64,
	__builtin_ia32_movdir64b): New builtins.
	* config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
	* config/i386/i386.c (ix86_target_string): Added -mmovdir64b
	and -mmovdiri.
	(ix86_valid_target_attribute_inner_p): Ditto.
	(ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
	and VOID_FTYPE_PUNSIGNED_UNSIGNED.
	(ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
	* config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
	TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
	* config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
	(movdiri<mode>, movdir64b_<mode>): New.
	* config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
	* config/i386/immintrin.h: Include movdirintrin.h.
	* config/i386/movdirintrin.h: New file.
	* doc/invoke.texi: Added -mmovdiri and -mmovdir64b.

gcc/testsuite/

	* gcc.target/i386/movdir-1.c: New test.

From-SVN: r259495
2018-04-19 17:08:02 +02:00
Richard Biener
ca98e4c5d0 re PR rtl-optimization/85455 (ICE in verify_loop_structure, at cfgloop.c:1708 (error: basic block 3 should be marked irreducible))
2018-04-19  Richard Biener  <rguenther@suse.de>

	PR middle-end/85455
	* cfg.c (clear_bb_flags): When loop state says we have
	marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.

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

From-SVN: r259494
2018-04-19 13:53:06 +00:00
Richard Biener
1998638201 re PR tree-optimization/84737 (20% degradation in CPU2000 172.mgrid starting with r256888)
2018-04-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84737
	* tree-vect-data-refs.c (vect_copy_ref_info): New function
	copying restrict info.
	(vect_setup_realignment): Use it.
	* tree-vectorizer.h (vect_copy_ref_info): Declare.
	* tree-vect-stmts.c (vectorizable_store): Copy ref info from
	the first DR to all generated stores.
	(vectorizable_load): Likewise for loads.

From-SVN: r259493
2018-04-19 12:41:42 +00:00
Christophe Lyon
411a771a17 [testsuite] Fix tests for pr84805 and pr85405.
2018-04-19  Christophe Lyon  <christophe.lyon@linaro.org>

	* g++.dg/lto/pr85405_0.C: Require shared and fpic effective
	targets.
	* g++.dg/lto/pr85405b_0.C: Likewise.
	* g++.dg/lto/pr84805_0.C: Likewise.

From-SVN: r259492
2018-04-19 10:59:36 +02:00
Thomas Schwinge
6e0d40b6f8 PR85463 '[nvptx] "exit" in offloaded region doesn't terminate process'
libgomp/
	PR libfortran/85166
	* testsuite/libgomp.oacc-fortran/abort-1.f90: Switch back to "call
	abort".
	* testsuite/libgomp.oacc-fortran/abort-2.f90: Likewise.

	libgfortran/
	PR libfortran/85166
	PR libgomp/85463
	* runtime/minimal.c (stop_numeric): Reimplement.
	(stop_string, error_stop_string, error_stop_numeric): New
	functions.
	libgomp/
	PR libgomp/85463
	* testsuite/libgomp.oacc-fortran/error_stop-1.f: New file.
	* testsuite/libgomp.oacc-fortran/error_stop-2.f: Likewise.
	* testsuite/libgomp.oacc-fortran/error_stop-3.f: Likewise.
	* testsuite/libgomp.oacc-fortran/stop-1.f: Likewise.
	* testsuite/libgomp.oacc-fortran/stop-2.f: Likewise.
	* testsuite/libgomp.oacc-fortran/stop-3.f: Likewise.

From-SVN: r259491
2018-04-19 10:53:38 +02:00
Martin Liska
1781a04fcc Do not bail out for multiple PREVAILING_DEF_IRONLY for common symbols.
2018-04-19  Martin Liska  <mliska@suse.cz>

	* lto-symtab.c (lto_symtab_resolve_symbols): Do not bail out
	for multiple PREVAILING_DEF_IRONLY for common symbols.

From-SVN: r259490
2018-04-19 08:42:52 +00:00
Jakub Jelinek
f53e7e138c re PR tree-optimization/85446 (wrong-code on riscv64)
PR tree-optimization/85446
	* match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
	the integral and pointer types to have the same precision.

From-SVN: r259488
2018-04-19 09:46:54 +02:00