1. 20 Feb, 2018 1 commit
  2. 19 Feb, 2018 1 commit
    • CET shouldn't be enabled in 32-bit run-time libraries by defualt · 14e335ed
      ENDBR32 and RDSSPD are multi-byte NOPs on x86-64 processors and
      newer x86 processors, starting Pentium Pro.  They are UD on older
      32-bit processors. Detect this at configure time and adjust the
      default value for enable_cet. GCC will enable CET in 32-bit run-time
      libraries in any case if --enable-cet is used to configure GCC.
      
      	PR target/84148
      	* config/cet.m4: Check if target support multi-byte NOPS (SSE).
      	* libatomic/configure: Regenerate.
      	* libbacktrace/configure: Likewise.
      	* libgcc/configure: Likewise.
      	* libgfortran/configure: Likewise.
      	* libgomp/configure: Likewise.
      	* libitm/configure: Likewise.
      	* libmpx/configure: Likewise.
      	* libobjc/configure: Likewise.
      	* libquadmath/configure: Likewise.
      	* libsanitizer/configure: Likewise.
      	* libssp/configure: Likewise.
      	* libstdc++-v3/configure: Likewise.
      	* libvtv/configure: Likewise.
      
      From-SVN: r257809
      Igor Tsimbalist committed
  3. 16 Feb, 2018 1 commit
  4. 14 Feb, 2018 1 commit
    • Reimplement CET intrinsics for rdssp/incssp insn. · f8de876d
      Introduce a couple of new CET intrinsics for reading and updating a
      shadow stack pointer (_get_ssp and _inc_ssp). They replace the existing
      _rdssp[d|q] and _incssp[d|q] instrinsics.
      
      	PR target/84239
      	* gcc/config/i386/cetintrin.h: Remove _rdssp[d|q] and
      	add _get_ssp intrinsics. Remove argument from
      	__builtin_ia32_rdssp[d|q].
      	* gcc/config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
      	* gcc/config/i386/i386-builtin.def: Remove argument from
      	__builtin_ia32_rdssp[d|q].
      	* gcc/config/i386/i386.c: Use UINT_FTYPE_VOID. Use
      	ix86_expand_special_args_builtin for _rdssp[d|q].
      	* gcc/config/i386/i386.md: Remove argument from rdssp[si|di] insn.
      	Clear register before usage.
      	* doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
      	Add documentation for new _get_ssp and _inc_ssp intrinsics.
      	* testsuite/gcc.target/i386/cet-intrin-3.c: Use new _get_ssp and
      	_inc_ssp intrinsics.
      	* testsuite/gcc.target/i386/cet-intrin-4.c: Likewise.
      	* testsuite/gcc.target/i386/cet-rdssp-1.c: Remove argument from
      	__builtin_ia32_rdssp[d|q].
      	* libgcc/config/i386/shadow-stack-unwind.hi (_Unwind_Frames_Extra):
      	Use new _get_ssp and _inc_ssp intrinsics.
      
      From-SVN: r257660
      Igor Tsimbalist committed
  5. 02 Feb, 2018 1 commit
    • Add -march=icelake. · 02da1e9c
      gcc/
      	* config.gcc: Add -march=icelake.
      	* config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
      	* config/i386/i386.c (processor_costs): Add m_ICELAKE.
      	(PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
      	PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
      	(processor_target_table): Add icelake.
      	(ix86_option_override_internal): Handle new PTAs.
      	(get_builtin_code_for_version): Handle icelake.
      	(M_INTEL_COREI7_ICELAKE): New.
      	(fold_builtin_cpu): Handle icelake.
      	* config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
      	* doc/invoke.texi: Add -march=icelake.
      gcc/testsuite/
      	* gcc.target/i386/funcspec-56.inc: Handle new march.
      	* g++.dg/ext/mv16.C: Ditto.
      libgcc/
      	* config/i386/cpuinfo.h (processor_subtypes): Add INTEL_COREI7_ICELAKE.
      
      From-SVN: r257331
      Julia Koval committed
  6. 26 Jan, 2018 1 commit
    • [ARC] Add support for reduced register file set · 048c6a9a
      gcc/
      2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
      
              * config/arc/arc-arches.def: Option mrf16 valid for all
              architectures.
              * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
              * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
              * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
              * config/arc/arc-tables.opt: Regenerate.
              * config/arc/arc.c (arc_conditional_register_usage): Handle
              reduced register file case.
              (arc_file_start): Set must have build attributes.
              * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
              mrf16 option value.
              * config/arc/arc.opt (mrf16): Add new option.
              * config/arc/elf.h (ATTRIBUTE_PCS): Define.
              * config/arc/genmultilib.awk: Handle new mrf16 option.
              * config/arc/linux.h (ATTRIBUTE_PCS): Define.
              * config/arc/t-multilib: Regenerate.
              * doc/invoke.texi (ARC Options): Document mrf16 option.
      
      libgcc/
      2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
      
              * config/arc/lib1funcs.S (__udivmodsi4): Use safe version for RF16
              option.
              (__divsi3): Use RF16 safe registers.
              (__modsi3): Likewise.
      
      From-SVN: r257083
      Claudiu Zissulescu committed
  7. 23 Jan, 2018 1 commit
  8. 22 Jan, 2018 6 commits
  9. 21 Jan, 2018 1 commit
  10. 13 Jan, 2018 1 commit
    • SVE unwinding · dbc3af4f
      This patch adds support for unwinding frames that use the SVE
      pseudo VG register.  We want this register to act like a normal
      register if the CFI explicitly sets it, but want to provide a
      default value otherwise.  Computing the default value requires
      an SVE target, so we only want to compute it on demand.
      
      aarch64_vg uses a hard-coded .inst in order to avoid a build
      dependency on binutils 2.28 or later.
      
      2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
      	* doc/tm.texi: Regenerate.
      
      libgcc/
      	* config/aarch64/value-unwind.h (aarch64_vg): New function.
      	(DWARF_LAZY_REGISTER_VALUE): Define.
      	* unwind-dw2.c (_Unwind_GetGR): Use DWARF_LAZY_REGISTER_VALUE
      	to provide a fallback register value.
      
      gcc/testsuite/
      	* g++.target/aarch64/sve/aarch64-sve.exp: New harness.
      	* g++.target/aarch64/sve/catch_1.C: New test.
      	* g++.target/aarch64/sve/catch_2.C: Likewise.
      	* g++.target/aarch64/sve/catch_3.C: Likewise.
      	* g++.target/aarch64/sve/catch_4.C: Likewise.
      	* g++.target/aarch64/sve/catch_5.C: Likewise.
      	* g++.target/aarch64/sve/catch_6.C: Likewise.
      
      Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
      
      From-SVN: r256615
      Richard Sandiford committed
  11. 08 Jan, 2018 2 commits
    • quad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use long double. · 68df9882
      2018-01-08  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/quad-float128.h (IBM128_TYPE): Explicitly use
      	__ibm128, instead of trying to use long double.
      	(CVT_FLOAT128_TO_IBM128): Use TFtype instead of __float128 to
      	accomidate -mabi=ieeelongdouble multilibs.
      	(CVT_IBM128_TO_FLOAT128): Likewise.
      	* config/rs6000/ibm-ldouble.c (IBM128_TYPE): New macro to define
      	the appropriate IBM extended double type.
      	(__gcc_qadd): Change all occurances of long double to IBM128_TYPE.
      	(__gcc_qsub): Likewise.
      	(__gcc_qmul): Likewise.
      	(__gcc_qdiv): Likewise.
      	(pack_ldouble): Likewise.
      	(__gcc_qneg): Likewise.
      	(__gcc_qeq): Likewise.
      	(__gcc_qne): Likewise.
      	(__gcc_qge): Likewise.
      	(__gcc_qle): Likewise.
      	(__gcc_stoq): Likewise.
      	(__gcc_dtoq): Likewise.
      	(__gcc_itoq): Likewise.
      	(__gcc_utoq): Likewise.
      	(__gcc_qunord): Likewise.
      	* config/rs6000/_mulkc3.c (toplevel): Include soft-fp.h and
      	quad-float128.h for the definitions.
      	(COPYSIGN): Use the f128 version instead of the q version.
      	(INFINITY): Likewise.
      	(__mulkc3): Use TFmode/TCmode for float128 scalar/complex types.
      	* config/rs6000/_divkc3.c (toplevel): Include soft-fp.h and
      	quad-float128.h for the definitions.
      	(COPYSIGN): Use the f128 version instead of the q version.
      	(INFINITY): Likewise.
      	(FABS): Likewise.
      	(__divkc3): Use TFmode/TCmode for float128 scalar/complex types.
      	* config/rs6000/extendkftf2-sw.c (__extendkftf2_sw): Likewise.
      	* config/rs6000/trunctfkf2-sw.c (__trunctfkf2_sw): Likewise.
      
      From-SVN: r256354
      Michael Meissner committed
    • quad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use long double. · d5eea0f7
      2018-01-08  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/quad-float128.h (IBM128_TYPE): Explicitly use
      	__ibm128, instead of trying to use long double.
      	(CVT_FLOAT128_TO_IBM128): Use TFtype instead of __float128 to
      	accomidate -mabi=ieeelongdouble multilibs.
      	(CVT_IBM128_TO_FLOAT128): Likewise.
      	* config/rs6000/ibm-ldouble.c (IBM128_TYPE): New macro to define
      	the appropriate IBM extended double type.
      	(__gcc_qadd): Change all occurances of long double to IBM128_TYPE.
      	(__gcc_qsub): Likewise.
      	(__gcc_qmul): Likewise.
      	(__gcc_qdiv): Likewise.
      	(pack_ldouble): Likewise.
      	(__gcc_qneg): Likewise.
      	(__gcc_qeq): Likewise.
      	(__gcc_qne): Likewise.
      	(__gcc_qge): Likewise.
      	(__gcc_qle): Likewise.
      	(__gcc_stoq): Likewise.
      	(__gcc_dtoq): Likewise.
      	(__gcc_itoq): Likewise.
      	(__gcc_utoq): Likewise.
      	(__gcc_qunord): Likewise.
      	* config/rs6000/_mulkc3.c (toplevel): Include soft-fp.h and
      	quad-float128.h for the definitions.
      	(COPYSIGN): Use the f128 version instead of the q version.
      	(INFINITY): Likewise.
      	(__mulkc3): Use TFmode/TCmode for float128 scalar/complex types.
      	* config/rs6000/_divkc3.c (toplevel): Include soft-fp.h and
      	quad-float128.h for the definitions.
      	(COPYSIGN): Use the f128 version instead of the q version.
      	(INFINITY): Likewise.
      	(FABS): Likewise.
      	(__divkc3): Use TFmode/TCmode for float128 scalar/complex types.
      	* config/rs6000/extendkftf2-sw.c (__extendkftf2_sw): Likewise.
      	* config/rs6000/trunctfkf2-sw.c (__trunctfkf2_sw): Likewise.
      
      From-SVN: r256353
      Michael Meissner committed
  12. 05 Jan, 2018 1 commit
  13. 03 Jan, 2018 1 commit
  14. 13 Dec, 2017 1 commit
  15. 09 Dec, 2017 1 commit
  16. 01 Dec, 2017 1 commit
  17. 30 Nov, 2017 1 commit
    • re PR libgcc/83112 (Silence warnings from PowerPC libgcc float128-ifunc.c compilation) · 75ad35b5
      2017-11-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	PR libgcc/83112
      	* config/rs6000/float128-ifunc.c (__addkf3_resolve): Use the
      	correct type for all ifunc resolvers to silence -Wattribute-alias
      	warnings.  Eliminate the forward declaration of the resolver
      	functions which is no longer needed.
      	(__subkf3_resolve): Likewise.
      	(__mulkf3_resolve): Likewise.
      	(__divkf3_resolve): Likewise.
      	(__negkf2_resolve): Likewise.
      	(__eqkf2_resolve): Likewise.
      	(__nekf2_resolve): Likewise.
      	(__gekf2_resolve): Likewise.
      	(__gtkf2_resolve): Likewise.
      	(__lekf2_resolve): Likewise.
      	(__ltkf2_resolve): Likewise.
      	(__unordkf2_resolve): Likewise.
      	(__extendsfkf2_resolve): Likewise.
      	(__extenddfkf2_resolve): Likewise.
      	(__trunckfsf2_resolve): Likewise.
      	(__trunckfdf2_resolve): Likewise.
      	(__fixkfsi_resolve): Likewise.
      	(__fixkfdi_resolve): Likewise.
      	(__fixunskfsi_resolve): Likewise.
      	(__fixunskfdi_resolve): Likewise.
      	(__floatsikf_resolve): Likewise.
      	(__floatdikf_resolve): Likewise.
      	(__floatunsikf_resolve): Likewise.
      	(__floatundikf_resolve): Likewise.
      	(__extendkftf2_resolve): Likewise.
      	(__trunctfkf2_resolve): Likewise.
      
      	PR libgcc/83103
      	* config/rs6000/quad-float128.h (TF): Don't define if long double
      	is IEEE 128-bit floating point.
      	(TCtype): Define as either TCmode or KCmode, depending on whether
      	long double is IEEE 128-bit floating point.
      	(__mulkc3_sw): Add declarations for software/hardware versions of
      	complex multiply/divide.
      	(__divkc3_sw): Likewise.
      	(__mulkc3_hw): Likewise.
      	(__divkc3_hw): Likewise.
      	* config/rs6000/_mulkc3.c (_mulkc3): If we are building ifunc
      	handlers to switch between using software emulation and hardware
      	float128 instructions, build the complex multiply/divide functions
      	for both software and hardware support.
      	* config/rs6000/_divkc3.c (_divkc3): Likewise.
      	* config/rs6000/float128-ifunc.c (__mulkc3_resolve): Likewise.
      	(__divkc3_resolve): Likewise.
      	(__mulkc3): Likewise.
      	(__divkc3): Likewise.
      	* config/rs6000/t-float128-hw (fp128_hardfp_src): Likewise.
      	(fp128_hw_src): Likewise.
      	(fp128_hw_static_obj): Likewise.
      	(fp128_hw_shared_obj): Likewise.
      	(_mulkc3-hw.c): Create _mulkc3-hw.c and _divkc3-hw.c from
      	_mulkc3.c and _divkc3.c, changing the function name.
      	(_divkc3-hw.c): Likewise.
      	* config/rs6000/t-float128 (clean-float128): Delete _mulkc3-hw.c
      	and _divkc3-hw.c.
      
      From-SVN: r255282
      Michael Meissner committed
  18. 26 Nov, 2017 1 commit
    • i386.c (processor_target_table): Add skylake_cost for skylake-avx512. · c234d831
      	* config/i386/i386.c (processor_target_table): Add skylake_cost for
      	skylake-avx512.
      	* config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
      	skylake_cost): New.
      
      	* config/i386/driver-i386.c (host_detect_local_cpu):
      	Detect skylake-avx512.
      
      	* config.gcc: Add -march=cannonlake.
      	* config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
      	* config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
      	(PTA_CANNONLAKE): New.
      	(processor_target_table): Add cannonlake.
      	(ix86_option_override_internal): Ditto.
      	(fold_builtin_cpu): Ditto.
      	(get_builtin_code_for_version): Handle cannonlake.
      	(M_INTEL_COREI7_CANNONLAKE): New.
      	* config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
      	* doc/invoke.texi: Add -march=cannonlake.
      
      gcc/testsuite/
      
      	* gcc.target/i386/funcspec-56.inc: Handle new march.
      	* g++.dg/ext/mv16.C: Ditto.
      
      libgcc/
      
      	* config/i386/cpuinfo.c (get_intel_cpu): Handle cannonlake.
      	* config/i386/cpuinfo.h (processor_subtypes): Add
      	INTEL_COREI7_CANNONLAKE.
      
      From-SVN: r255155
      Uros Bizjak committed
  19. 20 Nov, 2017 1 commit
  20. 17 Nov, 2017 2 commits
    • Add Intel CET support for EH in libgcc. · 6a10fff4
      Control-flow Enforcement Technology (CET), published by Intel,
      introduces the Shadow Stack feature, which ensures a return from a
      function is done to exactly the same location from where the function
      was called. When EH is present the control-flow transfer may skip some
      stack frames and the shadow stack has to be adjusted not to signal a
      violation of a control-flow transfer. It's done by counting a number
      of skiping frames and adjasting shadow stack pointer by this number.
      
      Having new semantic of the 'ret' instruction if CET is supported in HW
      the 'ret' instruction cannot be generated in ix86_expand_epilogue when
      we are returning after EH is processed. Added a code in
      ix86_expand_epilogue to adjust Shadow Stack pointer and to generate an
      indirect jump instead of 'ret'. As sp register is used during this
      adjustment thus the argument in pro_epilogue_adjust_stack is changed
      to update cfa_reg based on whether control-flow instrumentation is set.
      Without updating the cfa_reg field there is an assert later in dwarf2
      pass related to mismatch the stack register and cfa_reg value.
      
      gcc/
      	* config/i386/i386.c (ix86_expand_epilogue): Change simple
      	return to indirect jump for EH return if control-flow protection
      	is enabled. Change explicit 'false' argument in
      	pro_epilogue_adjust_stack with a value of flag_cf_protection.
      	* config/i386/i386.md (simple_return_indirect_internal): Remove
      	SImode restriction to support 64-bit.
      
      libgcc/
      	* config/i386/linux-unwind.h: Include
      	config/i386/shadow-stack-unwind.h.
      	* config/i386/shadow-stack-unwind.h: New file.
      	* unwind-dw2.c: (uw_install_context): Add a frame parameter and
      	pass it to _Unwind_Frames_Extra.
      	* unwind-generic.h (_Unwind_Frames_Extra): New.
      	* unwind.inc (_Unwind_RaiseException_Phase2): Add frames_p
      	parameter. Add local variable frames to count number of frames.
      	(_Unwind_ForcedUnwind_Phase2): Likewise.
      	(_Unwind_RaiseException): Add local variable frames to count
      	number of frames, pass it to _Unwind_RaiseException_Phase2 and
      	uw_install_context.
      	(_Unwind_ForcedUnwind): Likewise.
      	(_Unwind_Resume): Likewise.
      	(_Unwind_Resume_or_Rethrow): Likewise.
      
      From-SVN: r254876
      Igor Tsimbalist committed
    • Enable building libgcc with CET options. · 1ecae1fc
      Enable building libgcc with CET options by default on Linux/x86 if
      binutils supports CET v2.0.  It can be disabled with --disable-cet.
      It is an error to configure GCC with --enable-cet if bintuiils
      doesn't support CET v2.0.
      
      ENDBR instruction is added to __morestack_large_model since it is
      called indirectly.
      
      2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
      
      config/
      	* cet.m4: New file.
      
      gcc/
      	* config.gcc (extra_headers): Add cet.h for x86 targets.
      	* config/i386/cet.h: New file.
      	* doc/install.texi: Add --enable-cet/--disable-cet.
      
      libgcc/
      	* Makefile.in (configure_deps): Add $(srcdir)/../config/cet.m4.
      	(CET_FLAGS): New.
      	* config/i386/morestack.S: Include <cet.h>.
      	(__morestack_large_model): Add _CET_ENDBR at function entrance.
      	* config/i386/resms64.h: Include <cet.h>.
      	* config/i386/resms64f.h: Likewise.
      	* config/i386/resms64fx.h: Likewise.
      	* config/i386/resms64x.h: Likewise.
      	* config/i386/savms64.h: Likewise.
      	* config/i386/savms64f.h: Likewise.
      	* config/i386/t-linux (HOST_LIBGCC2_CFLAGS): Add $(CET_FLAGS).
      	(CRTSTUFF_T_CFLAGS): Likewise.
      	* configure.ac: Include ../config/cet.m4.
      	Set and substitute CET_FLAGS.
      	* configure: Regenerated.
      
      From-SVN: r254868
      Igor Tsimbalist committed
  21. 14 Nov, 2017 1 commit
    • Adapt Solaris 12 references · f021f1d3
      	libgcc:
      	* config.host (*-*-solaris2*): Adapt comment for Solaris 12
      	renaming.
      	* config/sol2/crtpg.c (__start_crt_compiler): Likewise.
      	* configure.ac (libgcc_cv_solaris_crts): Likewise.
      	* configure: Regenerate.
      
      	gcc:
      	* config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
      	Solaris 11.  Update comment.
      	* configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
      	renaming.
      	* config/sol2.h (STARTFILE_SPEC): Likewise.
      	* configure: Regenerate.
      
      	gcc/testsuite:
      	* lib/target-supports.exp (check_effective_target_pie): Adapt
      	comment for Solaris 12 renaming.
      
      	* gcc.dg/torture/pr60092.c: Remove *-*-solaris2.11* dg-xfail-run-if.
      
      From-SVN: r254737
      Rainer Orth committed
  22. 07 Nov, 2017 2 commits
  23. 04 Nov, 2017 1 commit
  24. 03 Nov, 2017 1 commit
    • [ARC] Fix to unwinding. · b0c7ddf8
      gcc/ChangeLog:
      2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
      
              * config/arc/arc.c (arc_save_restore): Corrected CFA note.
              (arc_expand_prologue): Restore blink for millicode.
              * config/arc/linux.h (LINK_EH_SPEC): Defined.
      
      libgcc/ChangeLog:
      2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
                  Vineet Gupta <vgupta@synopsys.com>
      
              * config.host (arc*-*-linux*): Set md_unwind_header variable.
              * config/arc/linux-unwind-reg.def: New file.
              * config/arc/linux-unwind.h: Likewise.
      
      Co-Authored-By: Vineet Gupta <vgupta@synopsys.com>
      
      From-SVN: r254367
      Cupertino Miranda committed
  25. 23 Oct, 2017 2 commits
  26. 14 Oct, 2017 1 commit
    • rl78.c (rl78_emit_libcall): New function. · a0bf6cf7
      [gcc]
      	* config/rl78/rl78.c (rl78_emit_libcall): New function.
      	* config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
      	* config/rl78/rl78.md: New define_expand "adddi3".
      [libgcc]
      	* config/rl78/adddi3.S: New assembly file.
      	* config/rl78/t-rl78: Added adddi3.S to LIB2ADD.
      
      From-SVN: r253748
      Sebastian Perta committed
  27. 13 Oct, 2017 1 commit
    • re PR target/82274 (__builtin_mul_overflow fails to detect overflow for int64_t… · e7176f75
      re PR target/82274 (__builtin_mul_overflow fails to detect overflow for int64_t when compiled with -m32)
      
      	PR target/82274
      	* internal-fn.c (expand_mul_overflow): If both operands have
      	the same highpart of -1 or 0 and the topmost bit of lowpart
      	is different, overflow is if res <= 0 rather than res < 0.
      
      	* libgcc2.c (__mulvDI3): If both operands have
      	the same highpart of -1 and the topmost bit of lowpart is 0,
      	multiplication overflows even if both lowparts are 0.
      
      	* gcc.dg/pr82274-1.c: New test.
      	* gcc.dg/pr82274-2.c: New test.
      
      From-SVN: r253734
      Jakub Jelinek committed
  28. 29 Sep, 2017 1 commit
  29. 26 Sep, 2017 1 commit
    • Enable no-exec stacks for more targets using the Linux kernel. · 938b6f1e
      Building glibc for many different configurations and running the
      compilation parts of the testsuite runs into failures of the
      elf/check-execstack test for hppa and microblaze.  Those
      configurations default to executable stacks in the Linux kernel
      because of VM_DATA_DEFAULT_FLAGS definitions including VM_EXEC
      (VM_DATA_DEFAULT_FLAGS being the default definition of
      VM_STACK_DEFAULT_FLAGS).
      
      This fails because those configurations are not generating
      .note.GNU-stack sections to indicate that programs do not need an
      executable stack.  This patch fixes GCC to generate those sections on
      those architectures (when configured for a target using the Linux
      kernel), as it does on other architectures, together with adding that
      section to libgcc .S sources, with the same code as used on other
      architectures (or a variant using "#ifdef __linux__" instead of the
      usual "#if defined(__ELF__) && defined(__linux__)" for microblaze, as
      that configuration doesn't use elfos.h and so doesn't define __ELF__).
      
      This suffices to eliminate that glibc test failure.  (For hppa, the
      compilation parts of the glibc testsuite still fail because of the
      separate elf/check-textrel failure.)
      
      gcc:
      	* config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
      	* config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
      	* config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
      	* config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
      	Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
      	conditionals inside the function instead of around it.  Call
      	file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
      	(TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
      
      libgcc:
      	* config/microblaze/crti.S, config/microblaze/crtn.S,
      	config/microblaze/divsi3.S, config/microblaze/moddi3.S,
      	config/microblaze/modsi3.S, config/microblaze/muldi3_hard.S,
      	config/microblaze/mulsi3.S,
      	config/microblaze/stack_overflow_exit.S,
      	config/microblaze/udivsi3.S, config/microblaze/umodsi3.S,
      	config/pa/milli64.S: Add .note.GNU-stack section.
      
      From-SVN: r253204
      Joseph Myers committed
  30. 23 Sep, 2017 1 commit
  31. 20 Sep, 2017 1 commit
    • config.gcc: Support "knm". · cace2309
      gcc/
      
              * config.gcc: Support "knm".
              * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm".
              * config/i386/i386-c.c (ix86_target_macros_internal): Handle
              PROCESSOR_KNM.
              * config/i386/i386.c (m_KNM): Define.
              (processor_target_table): Add "knm".
              (PTA_KNM): Define.
              (ix86_option_override_internal): Add "knm".
              (ix86_issue_rate): Add PROCESSOR_KNM.
              (ix86_adjust_cost): Ditto.
              (ia32_multipass_dfa_lookahead): Ditto.
              (get_builtin_code_for_version): Handle PROCESSOR_KNM.
              (fold_builtin_cpu): Add M_INTEL_KNM.
              * config/i386/i386.h (processor_costs): Define TARGET_KNM.
              (processor_type): Add PROCESSOR_KNM.
               * config/i386/x86-tune.def: Add m_KNM.
              * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type.
      
      libgcc/
              * config/i386/cpuinfo.h (processor_types): Add INTEL_KNM.
              * config/i386/cpuinfo.c (get_intel_cpu): Detect Knights Mill.
      
      gcc/testsuite/
      
              * gcc.target/i386/builtin_target.c: Test knm.
              * gcc.target/i386/funcspec-56.inc: Test arch=knm.
      
      From-SVN: r253013
      Sebastian Peryt committed