- 02 Oct, 2018 21 commits
-
-
Reviewed-on: https://go-review.googlesource.com/138839 From-SVN: r264798
Ian Lance Taylor committed -
This adds the CPU model number of the IBM z14 Model ZR1 machine to -march=native. The patch doesn't actually change anything since we anyway default to z14 for unknown CPU model numbers. So this is just for the sake of completeness. 2018-10-02 Andreas Krebbel <krebbel@linux.ibm.com> * config/s390/driver-native.c (s390_host_detect_local_cpu): Add 0x3907 as CPU model number. From-SVN: r264797
Andreas Krebbel committed -
This is a mechanical change not impacting code generation. With that patch I try to hide the artificial CPU name arch12 which we had to use before the announcement of the IBM z14 machine. arch12 of course stays a valid option to -march and -mtune. So this is just about making the code somewhat easier to read. gcc/ChangeLog: 2018-10-02 Andreas Krebbel <krebbel@linux.ibm.com> * common/config/s390/s390-common.c: Rename PF_ARCH12 to PF_Z14. * config/s390/s390.h (enum processor_flags): Rename PF_ARCH12 to PF_Z14. Rename TARGET_CPU_ARCH12 to TARGET_CPU_Z14, TARGET_CPU_ARCH12_P to TARGET_CPU_Z14_P, TARGET_ARCH12 to TARGET_Z14, and TARGET_ARCH12_P to TARGET_Z14_P. * config/s390/s390.md: Likewise. Rename also the cpu attribute value from arch12 to z14. From-SVN: r264796
Andreas Krebbel committed -
* config/i386/i386.md (fxam<mode>2_i387_with_temp): Remove. (isinfxf2): Ditto. (isinf<mode>2): Ditto. From-SVN: r264795
Uros Bizjak committed -
* config/i386/i386.c (ix86_emit_i387_round): Extend op1 to XFmode before emitting fxam. Perform calculations in XFmode. From-SVN: r264794
Uros Bizjak committed -
This reportedly happens on CentOS 5.11. The real code will work fine; this test is assuming that the unexported slice function will handle the splice, but if pipe2 does not work then it doesn't. The relevant code in internal/poll/splice_linux.go says "Falling back to pipe is possible, but prior to 2.6.29 splice returns -EAGAIN instead of 0 when the connection is closed." Reviewed-on: https://go-review.googlesource.com/138838 From-SVN: r264793
Ian Lance Taylor committed -
2018-10-02 Marc Glisse <marc.glisse@inria.fr> gcc/ * match.pd (((X /[ex] A) +- B) * A): New transformation. gcc/testsuite/ * gcc.dg/tree-ssa/muldiv-1.c: New file. * gcc.dg/tree-ssa/muldiv-2.c: Likewise. From-SVN: r264792
Marc Glisse committed -
2018-10-02 Marc Glisse <marc.glisse@inria.fr> PR libstdc++/87258 * include/bits/stl_bvector.h (vector::begin(), vector::cbegin()): Rebuild _M_start with an explicit 0 offset. From-SVN: r264791
Marc Glisse committed -
2018-10-02 Marc Glisse <marc.glisse@inria.fr> PR middle-end/87319 * fold-const.c (fold_plusminus_mult_expr): Handle complex and vectors. * tree.c (signed_or_unsigned_type_for): Handle complex. From-SVN: r264790
Marc Glisse committed -
Since a while we use a rldimi instead of rldicl/rldicr/or to combine two words to one. PR target/87081 * gcc.target/powerpc/vec-init-6.c: Fix expected asm. From-SVN: r264789
Segher Boessenkool committed -
From-SVN: r264788
Jeff Law committed -
* builtins.c (unterminated_array): Add new arguments. If argument is not terminated, bubble up size and exact state to callers. (expand_builtin_strnlen): Detect, avoid expanding and diagnose unterminated arrays. (c_strlen): Fill in offset of start of unterminated strings. * builtins.h (unterminated_array): Update prototype. * gcc.dg/warn-strnlen-no-nul.c: New. Co-Authored-By: Jeff Law <law@redhat.com> From-SVN: r264787
Martin Sebor committed -
Calling std::get will check some static assertions and also do a runtime check for a valid index before calling __detail::__variant::__get. The std::visit function already handles the case where any variant has an invalid index, so __get can be used directly in __visit_invoke. * include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get directly instead of get, as caller ensures correct index is used. (holds_alternative, get, get_if): Remove redundant inline specifiers. (_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise. From-SVN: r264786
Jonathan Wakely committed -
2018-10-02 Richard Biener <rguenther@suse.de> * config/i386/sse.md (reduc_plus_scal_v4df): Avoid the use of haddv4df, first reduce to SSE width and exploit the fact that we only need element zero with the reduction result. (reduc_plus_scal_v2df): Likewise. From-SVN: r264785
Richard Biener committed -
<https://gcc.gnu.org/ml/libstdc++/2016-08/msg00006.html> arranged for libstdc++ tests to use -fno-show-column by default, but only for build-tree testing. This patch adds it to the options used for installed testing as well. Tested with installed testing for a cross to x86_64-linux-gnu, where it fixes various test failures. * testsuite/lib/libstdc++.exp (libstdc++_init): Use -fno-show-column in default cxxflags. From-SVN: r264784
Joseph Myers committed -
__NO_STRING_INLINES was removed from uClibc around 2004 so has no effect. libstdc++-v3/ChangeLog: 2018-10-01 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete. From-SVN: r264783
Bernhard Reutner-Fischer committed -
* dojump.h (do_jump): Delete. (do_jump_1): Likewise. (split_comparison): Move around. * dojump.c (do_jump): Make static. (do_jump_1): Likewise. (jumpifnot): Move around. (jumpifnot_1): Likewise. (jumpif): Likewise. (jumpif_1): Likewise. * expr.c (expand_expr_real_1): Call jumpif[not] instead of do_jump. From-SVN: r264781
Eric Botcazou committed -
reorg.c (make_return_insns): Use emit_copy_of_insn_after for the insns in the delay slot and add_insn_after... * reorg.c (make_return_insns): Use emit_copy_of_insn_after for the insns in the delay slot and add_insn_after for the jump insn. From-SVN: r264780
Eric Botcazou committed -
2018-10-02 Richard Biener <rguenther@suse.de> c/ * c-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE. cp/ * name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE. From-SVN: r264779
Richard Biener committed -
tree-inline.c (expand_call_inline): Use the location of the callee declaration for the inline-entry marker. 2018-10-02 Richard Biener <rguenther@suse.de> * tree-inline.c (expand_call_inline): Use the location of the callee declaration for the inline-entry marker. * final.c (notice_source_line): Remove special-casing of NOTE_INSN_INLINE_ENTRY. From-SVN: r264778
Richard Biener committed -
From-SVN: r264777
GCC Administrator committed
-
- 01 Oct, 2018 19 commits
-
-
When asking for a placeholder type of an alias type, build a placeholder for the underlying type, instead of treating the alias as a named type and calling get_backend. The latter may fail as we may not be ready to build a complete backend type. We have already used a unified backend type for alias type and its underlying type. Do the same for placeholders as well. Reviewed-on: https://go-review.googlesource.com/138635 From-SVN: r264773
Ian Lance Taylor committed -
This is enough to let libgo build when configured using --with-multilib-list=m64,m32,mx32. I don't have an x32-enabled kernel so I haven't tested whether it executes correctly. For https://gcc.gnu.org/PR87470 Reviewed-on: https://go-review.googlesource.com/138817 From-SVN: r264772
Ian Lance Taylor committed -
Rewrite the arm64 AES hashing code from gc assembler to C code using intrinsics. The resulting code generates the same hash code for the same input as the gc code--that doesn't matter as such, but testing it ensures that the C code does something useful. Reviewed-on: https://go-review.googlesource.com/138535 From-SVN: r264771
Ian Lance Taylor committed -
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00039.html * configure.ac (checkfuncs): Add pipe2. * config.in, configure: Rebuilt. * pex-unix.c (pex_unix_exec_child): Comminicate errors from child to parent with a pipe, when possible. From-SVN: r264769
Nathan Sidwell committed -
From-SVN: r264766
Joseph Myers committed -
gcc/ChangeLog: 2018-10-01 Carl Love <cel@us.ibm.com> PR 69431 * config/rs6000/rs6000-builtin.def (__builtin_mffsl): New. (__builtin_mtfsb0): New. (__builtin_mtfsb1): New. ( __builtin_set_fpscr_rn): New. (__builtin_set_fpscr_drn): New. * config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add. (rs6000_expand_set_fpscr_rn_builtin): Add. (rs6000_expand_set_fpscr_drn_builtin): Add. (rs6000_expand_builtin): Add case statement entries for RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1, RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN, RS6000_BUILTIN_MFFSL. (rs6000_init_builtins): Add ftype initialization and def_builtin calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1, __builtin_set_fpscr_rn, __builtin_set_fpscr_drn. * config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn, rs6000_mffscdrn): Add define_insn. (rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand. * doc/extend.texi: Add documentation for the builtins. gcc/testsuite/ChangeLog: 2018-10-01 Carl Love <cel@us.ibm.com> PR 69431 * gcc.target/powerpc/test_mffsl-p9.c: New file. * gcc.target/powerpc/test_fpscr_rn_builtin.c: New file. * gcc.target/powerpc/test_fpscr_drn_builtin.c: New file. * gcc.target/powerpc/test_fpscr_rn_builtin_error.c: New file. * gcc.target/powerpc/test_fpscr_drn_builtin_error.c: New file. From-SVN: r264764
Carl Love committed -
gcc/ChangeLog: 2018-10-01 Carl Love <cel@us.ibm.com> * config/rs6000/rs6000-builtin.def (__builtin_mffsl): New. (__builtin_mtfsb0): New. (__builtin_mtfsb1): New. ( __builtin_set_fpscr_rn): New. (__builtin_set_fpscr_drn): New. * config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add. (rs6000_expand_set_fpscr_rn_builtin): Add. (rs6000_expand_set_fpscr_drn_builtin): Add. (rs6000_expand_builtin): Add case statement entries for RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1, RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN, RS6000_BUILTIN_MFFSL. (rs6000_init_builtins): Add ftype initialization and def_builtin calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1, __builtin_set_fpscr_rn, __builtin_set_fpscr_drn. * config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn, rs6000_mffscdrn): Add define_insn. (rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand. * doc/extend.texi: Add documentation for the builtins. gcc/testsuite/ChangeLog: 2018-10-01 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/test_mffsl-p9.c: New file. * gcc.target/powerpc/test_fpscr_rn_builtin.c: New file. * gcc.target/powerpc/test_fpscr_drn_builtin.c: New file. * gcc.target/powerpc/test_fpscr_rn_builtin_error.c: New file. * gcc.target/powerpc/test_fpscr_drn_builtin_error.c: New file. From-SVN: r264762
Carl Love committed -
* doc/xml/manual/allocator.xml: Adjust link to "Reconsidering Custom Memory Allocation". From-SVN: r264761
Gerald Pfeifer committed -
* doc/html/*: Regenerate. From-SVN: r264760
Jonathan Wakely committed -
2018-10-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/65677 * trans-expr.c (gfc_trans_assignment_1): Set the 'identical' flag in the call to gfc_check_dependency. 2018-10-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/65677 * gfortran.dg/dependency_52.f90 : Expand the test to check both the call to adjustl and direct assignment of the substring. From-SVN: r264759
Paul Thomas committed -
2018-10-01 Richard Biener <rguenther@suse.de> PR tree-optimization/87465 * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo causing branch miscounts. * gcc.dg/tree-ssa/cunroll-15.c: New testcase. From-SVN: r264758
Richard Biener committed -
This patch defines the default parameters and validation for the aarch64 stack clash probing interval and guard sizes. It cleans up the previous implementation and insures that at no point the invalidate arguments are present in the pipeline for AArch64. Currently they are only corrected once cc1 initalizes the back-end. The default for AArch64 is 64 KB for both of these and we only support 4 KB and 64 KB probes. We also enforce that any value you set here for the parameters must be in sync. If an invalid value is specified an error will be generated and compilation aborted. gcc/ * common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM, aarch64_option_default_param): New. (params.h): Include. (TARGET_OPTION_VALIDATE_PARAM, aarch64_option_validate_param): New. * config/aarch64/aarch64.c (aarch64_override_options_internal): Simplify stack-clash protection validation code. From-SVN: r264757
Tamar Christina committed -
This patch changes it so that default parameters are validated during initialization. This change is needed to ensure parameters set via by the target specific common initialization routines still keep the parameters within the valid range. gcc/ * params.c (validate_param): New. (add_params): Use it. (set_param_value): Refactor param validation into validate_param. (diagnostic.h): Include. * diagnostic.h (diagnostic_ready_p): New. From-SVN: r264756
Tamar Christina committed -
This patch adds the ability for backends to add custom constrains to the param values by defining a new hook option_validate_param. This hook is invoked on every set_param_value which allows the back-end to ensure that the parameters are always within it's desired state. gcc/ * params.c (set_param_value): Add index of parameter being validated. * common/common-target.def (option_validate_param): New. * common/common-targhooks.h (default_option_validate_param): New. * common/common-targhooks.c (default_option_validate_param): New. * doc/tm.texi.in (TARGET_OPTION_VALIDATE_PARAM): New. * doc/tm.texi: Regenerate. From-SVN: r264755
Tamar Christina committed -
This patch cleans up the testsuite when a run is done with stack clash protection turned on. Concretely this switches off -fstack-clash-protection for a couple of tests: * assembler scan: some tests are quite fragile in that they check for exact assembly output, e.g. check for exact amount of sub etc. These won't match now. * vla: Some of the ubsan tests negative array indices. Because the arrays weren't used before the incorrect $sp wouldn't have been used. The correct value is restored on ret. Now however we probe the $sp which causes a segfault. * params: When testing the parameters we have to skip these on AArch64 because of our custom constraints on them. We already test them separately so this isn't a loss. Note that the testsuite is not entire clean due to gdb failure caused by alloca with stack clash. On AArch64 we output an incorrect .loc directive, but this is already the case with the current implementation in GCC and is a bug unrelated to this patch series. gcc/testsuite/ PR target/86486 * gcc.dg/pr82788.c: Skip for AArch64. * gcc.dg/guality/vla-1.c: Turn off stack-clash. * gcc.target/aarch64/subsp.c: Likewise. * gcc.dg/params/blocksort-part.c: Skip stack-clash checks on AArch64. * gcc.dg/stack-check-10.c: Add AArch64 specific checks. * gcc.dg/stack-check-12.c: ILP32 fixup. * gcc.dg/stack-check-5.c: Add AArch64 specific checks. * gcc.dg/stack-check-6a.c: Skip on AArch64, we don't support this. * testsuite/lib/target-supports.exp (check_effective_target_frame_pointer_for_non_leaf): AArch64 does not require frame pointer for non-leaf functions. From-SVN: r264754
Tamar Christina committed -
This patch enforces that the default guard size for stack-clash protection for AArch64 be 64KB unless the user has overriden it via configure in which case the user value is used as long as that value is within the valid range. It also does some basic validation to ensure that the guard size is only 4KB or 64KB and also enforces that for aarch64 the stack-clash probing interval is equal to the guard size. gcc/ PR target/86486 * config/aarch64/aarch64.c (aarch64_override_options_internal): Add validation for stack-clash parameters and set defaults. From-SVN: r264753
Tamar Christina committed -
This patch defines a configure option to allow the setting of the default guard size via configure flags when building the target. The new flag is: * --with-stack-clash-protection-guard-size=<num> The patch defines a new macro DEFAULT_STK_CLASH_GUARD_SIZE which targets need to use explicitly is they want to support this configure flag and values that users may have set. gcc/ PR target/86486 * configure.ac: Add stack-clash-protection-guard-size. * doc/install.texi: Document it. * config.in (DEFAULT_STK_CLASH_GUARD_SIZE): New. * params.def: Update comment for guard-size. (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE, PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Update description. * configure: Regenerate. From-SVN: r264752
Tamar Christina committed -
This patch adds a requirement that the number of outgoing arguments for a function is at least 8 bytes when using stack-clash protection and alloca. By using this condition we can avoid a check in the alloca code and so have smaller and simpler code there. A simplified version of the AArch64 stack frames is: +-----------------------+ | | | | | | +-----------------------+ |LR | +-----------------------+ |FP | +-----------------------+ |dynamic allocations | ---- expanding area which will push the outgoing +-----------------------+ args down during each allocation. |padding | +-----------------------+ |outgoing stack args | ---- safety buffer of 8 bytes (aligned) +-----------------------+ By always defining an outgoing argument, alloca(0) effectively is safe to probe at $sp due to the reserved buffer being there. It will never corrupt the stack. This is also safe for alloca(x) where x is 0 or x % page_size == 0. In the former it is the same case as alloca(0) while the latter is safe because any allocation pushes the outgoing stack args down: |FP | +-----------------------+ | | |dynamic allocations | ---- alloca (x) | | +-----------------------+ |padding | +-----------------------+ |outgoing stack args | ---- safety buffer of 8 bytes (aligned) +-----------------------+ Which means when you probe for the residual, if it's 0 you'll again just probe in the outgoing stack args range, which we know is non-zero (at least 8 bytes). gcc/ PR target/86486 * config/aarch64/aarch64.h (STACK_CLASH_MIN_BYTES_OUTGOING_ARGS, STACK_DYNAMIC_OFFSET): New. * config/aarch64/aarch64.c (aarch64_layout_frame): Update outgoing args size. (aarch64_stack_clash_protection_alloca_probe_range, TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New. gcc/testsuite/ PR target/86486 * gcc.target/aarch64/stack-check-alloca-1.c: New. * gcc.target/aarch64/stack-check-alloca-10.c: New. * gcc.target/aarch64/stack-check-alloca-2.c: New. * gcc.target/aarch64/stack-check-alloca-3.c: New. * gcc.target/aarch64/stack-check-alloca-4.c: New. * gcc.target/aarch64/stack-check-alloca-5.c: New. * gcc.target/aarch64/stack-check-alloca-6.c: New. * gcc.target/aarch64/stack-check-alloca-7.c: New. * gcc.target/aarch64/stack-check-alloca-8.c: New. * gcc.target/aarch64/stack-check-alloca-9.c: New. * gcc.target/aarch64/stack-check-alloca.h: New. * gcc.target/aarch64/stack-check-14.c: New. * gcc.target/aarch64/stack-check-15.c: New. From-SVN: r264751
Tamar Christina committed -
This patch adds a hook to tell the mid-end about the probing requirements of the target. On AArch64 we allow a specific range for which no probing needs to be done. This same range is also the amount that will have to be probed up when a probe is needed after dropping the stack. Defining this probe comes with the extra requirement that the outgoing arguments size of any function that uses alloca and stack clash be at the very least 8 bytes. With this invariant we can skip doing the zero checks for alloca and save some code. A simplified version of the AArch64 stack frame is: +-----------------------+ | | | | | | +-----------------------+ |LR | +-----------------------+ |FP | +-----------------------+ |dynamic allocations | -\ probe range hook effects these +-----------------------+ --\ and ensures that outgoing stack |padding | -- args is always > 8 when alloca. +-----------------------+ ---/ Which means it's always safe to probe |outgoing stack args |-/ at SP +-----------------------+ This allows us to generate better code than without the hook without affecting other targets. With this patch I am also removing the stack_clash_protection_final_dynamic_probe hook which was added specifically for AArch64 but that is no longer needed. gcc/ PR target/86486 * explow.c (anti_adjust_stack_and_probe_stack_clash): Support custom probe ranges. * target.def (stack_clash_protection_alloca_probe_range): New. (stack_clash_protection_final_dynamic_probe): Remove. * targhooks.h (default_stack_clash_protection_alloca_probe_range) New. (default_stack_clash_protection_final_dynamic_probe): Remove. * targhooks.c: Likewise. * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New. (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE): Remove. * doc/tm.texi: Regenerate. From-SVN: r264750
Tamar Christina committed
-