shrink-wrap: Once more PRs 67778, 68634, and now 68909
If a candidate PRE cannot get the prologue because a block BB is
reachable from it, but PRE does not dominate BB, we try again with the
dominators of PRE. That "try again" needs to again consider BB though,
we aren't done with it.
PR rtl-optimization/67778
PR rtl-optimization/68634
PR rtl-optimization/68909
* shrink-wrap.c (try_shrink_wrapping): Add comment. Don't pop
block from the stack until done with it. Remove a superfluous
bitmap set. Remove a superfluous bitmap test.
Andreas Tobler [Thu, 7 Jan 2016 20:35:53 +0000 (21:35 +0100)]
freebsd.h: Rename SUBTARGET_OVERRIDE_OPTIONS to SUBTARGET_OVERRIDE_INTERNAL_OPTIONS.
2016-01-07 Andreas Tobler <andreast@gcc.gnu.org>
* config/arm/freebsd.h: Rename SUBTARGET_OVERRIDE_OPTIONS to
SUBTARGET_OVERRIDE_INTERNAL_OPTIONS. Adjust to check
unaligned_access on the gcc_options set.
* config/arm/arm.c (arm_option_override_internal): Use
SUBTARGET_OVERRIDE_INTERNAL_OPTIONS.
Uros Bizjak [Thu, 7 Jan 2016 19:06:37 +0000 (20:06 +0100)]
re PR target/69140 (stack alignment + O1 breaks with Microsoft ABI)
2016-01-07 Uros Bizjak <ubizjak@gmail.com>
PR target/69140
* config/i386/i386.c (ix86_frame_pointer_required): Enable
frame pointer for TARGET_64BIT_MS_ABI when stack is misaligned.
2016-01-07 Uros Bizjak <ubizjak@gmail.com>
Revert
2016-01-06 Uros Bizjak <ubizjak@gmail.com>
PR target/69140
* config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid
depending on frame_pointer_needed before remaining integer and SSE
registers are saved.
Jakub Jelinek [Thu, 7 Jan 2016 08:47:44 +0000 (09:47 +0100)]
re PR tree-optimization/69141 (-O2 -fdump-tree-fre ICEs)
PR tree-optimization/69141
* tree-ssa-pre.c: Include langhooks.h.
(eliminate_dom_walker::before_dom_children): Use
lang_hooks.decl_printable_name instead of
cgraph_node::get ()->name ().
Uros Bizjak [Wed, 6 Jan 2016 20:19:04 +0000 (21:19 +0100)]
re PR target/69140 (stack alignment + O1 breaks with Microsoft ABI)
PR target/69140
* config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid
depending on frame_pointer_needed before remaining integer and SSE
registers are saved.
testsuite/ChangeLog:
PR target/69140
* gcc.target/i386/pr69140.c: New test
David Malcolm [Wed, 6 Jan 2016 20:13:19 +0000 (20:13 +0000)]
C: fix reported range of invalid unary dereference.
gcc/c/ChangeLog:
* c-parser.c (c_parser_unary_expression): For dereferences, build
a combined location before calling build_indirect_ref, so that
error reports cover the full range, manually updating the c_expr
src_range.
gcc/testsuite/ChangeLog:
* gcc.dg/bad-dereference.c: New test case.
Bill Schmidt [Wed, 6 Jan 2016 19:19:47 +0000 (19:19 +0000)]
vsx.md (*p9_vecload_<mode>): Replace VSX_M mode iterator with VSX_M2.
[gcc]
2015-01-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/vsx.md (*p9_vecload_<mode>): Replace VSX_M
mode iterator with VSX_M2.
(*p9_vecstore_<mode>): Likewise.
(*vsx_le_permute_<mode>): Restrict to !TARGET_P9_VECTOR.
(*vsx_le_perm_load_<mode> for VSX_LE_128): Likewise.
(*vsx_le_perm_store_<mode> for VSX_LE_128): Likewise.
(define_split for VSX_LE128 stores): Likewise.
(define_peephole2 for TImode LE swaps): Likewise.
(define_split for VSX_LE128 post-reload stores): Likewise.
[gcc/testsuite]
2015-01-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Marek Polacek [Wed, 6 Jan 2016 10:24:15 +0000 (10:24 +0000)]
re PR sanitizer/69099 (ICE when compiling gcc.dg/atomic/c11-atomic-exec-2.c with -fsanitize=float-cast-overflow)
PR sanitizer/69099
* c-convert.c (convert) [INTEGER_TYPE]: Drop ARG. Don't pass ARG to
ubsan_instrument_float_cast. Fold EXPR. Use NULL_TREE instead of
NULL.
* convert.c (convert_to_integer_1): Adjust call to
ubsan_instrument_float_cast. Use NULL_TREE instead of NULL.
* ubsan.c (ubsan_instrument_float_cast): Drop the ARG parameter. Use
EXPR instead of ARG.
* ubsan.h (ubsan_instrument_float_cast): Adjust declaration.
* gcc.dg/ubsan/float-cast-overflow-atomic.c: New test.
Marek Polacek [Tue, 5 Jan 2016 20:24:02 +0000 (20:24 +0000)]
re PR c/69104 (invalid atomic memory order not diagnosed)
PR c/69104
* builtins.c (get_memmodel): Use expansion point location rather than
the input location. Call warning_at rather than warning.
(expand_builtin_atomic_compare_exchange): Likewise.
(expand_builtin_atomic_load): Likewise.
(expand_builtin_atomic_store): Likewise.
(expand_builtin_atomic_clear): Likewise.
Would be more useful if we could use "const char * const *", but there's
a long standing bug where gcc warns about incompatible pointers when you
try to pass in "char **". We can at least constify the array itself as
gcc will not warn in that case.
H.J. Lu [Tue, 5 Jan 2016 20:19:16 +0000 (20:19 +0000)]
Use vector_operand on SSE with 16b memory operand
Add vector_operand, which is vector_memory_operand or register_operand,
and use it, instead of nonimmediate_operand, in SSE patterns with 16-byte
memory operand.
gcc/
PR target/68991
* config/i386/i386.c (ix86_expand_vector_logical_operator):
Replace nonimmediate_operand with vector_operand.
* config/i386/predicates.md (vector_operand): New predicate.
(general_vector_operand): Replace nonimmediate_operand with
vector_operand.
* config/i386/sse.md: Replace nonimmediate_operand with
vector_operand and m constraint with Bm constraint on SSE
patterns with 16-byte memory operand.
* config/i386/subst.md (round_nimm_predicate): Replace
nonimmediate_operand with vector_operand.
(round_saeonly_nimm_predicate): Likewise.
(round_saeonly_nimm_scalar_predicate): New.
gcc/testsuite/
PR target/68991
* gcc.target/i386/pr68991.c: New test.
H.J. Lu [Tue, 5 Jan 2016 20:17:26 +0000 (20:17 +0000)]
Add vector_memory_operand and "Bm" constraint
SSE vector arithmetic and logic instructions only accept aligned memory
operand. This patch adds vector_memory_operand and "Bm" constraint for
aligned SSE memory operand. They are applied to SSE plusminus and
any_logic patterns.
gcc/
PR target/68991
* config/i386/constraints.md (Bm): New constraint.
* config/i386/predicates.md (vector_memory_operand): New
predicate.
* config/i386/sse.md: Replace xm with xBm in plusminus and
any_logic patterns.
gcc/testsuite/
PR target/68991
* g++.dg/pr68991-1.C: New test.
* g++.dg/pr68991-2.C: Likewise.
[PATCH v2] ia64: don't use dynamic relocations for local symbols PR other/60465
[PATCH v2] ia64: don't use dynamic relocations for local symbols
PR other/60465
* config/ia64/ia64.c (ia64_expand_load_address): Use gprel64
for local symbolic operands.
* config/ia64/predicates.md (local_symbolic_operand64): New
predicate.
PR other/60465
* gcc.target/ia64/pr60465-gprel64.c: New test.
* gcc.target/ia64/pr60465-gprel64-c37.c: New test.
David Malcolm [Tue, 5 Jan 2016 15:54:46 +0000 (15:54 +0000)]
Fix PR c/69122 (-Wmisleading-indentation false positive with empty macros)
gcc/c-family/ChangeLog:
PR c/69122
* c-indentation.c (get_visual_column): Remove default argument.
(should_warn_for_misleading_indentation): For the multiline case,
update call to get_visual_column for next_stmt_exploc so that it
captures the location of the first non-whitespace character in the
relevant line. Don't issue warnings if there is non-whitespace
before the next statement.
gcc/testsuite/ChangeLog:
PR c/69122
* c-c++-common/Wmisleading-indentation.c (pr69122): New function.
constraints.md (wo constraint): New constraint for ISA 3.0 (power9).
[gcc]
2016-01-04 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/constraints.md (wo constraint): New constraint for
ISA 3.0 (power9).
* config/rs6000/rs6000.c (rs6000_debug_reg_global): Add support
for wo constraint.
(rs6000_init_hard_regno_mode_ok): Likewise.
* config/rs6000/rs6000.h (r6000_reg_class_enum): Add support for
wo constraint.
* config/rs6000/altivec.md (altivec_vperm_<mode>): Clean up vperm
expanders not to have constraints. Add support for ISA 3.0 xxperm
instruction. Add support for fusing xxlor with xxperm.
(altivec_vperm_<mode>_internal): Likewise.
(altivec_vperm_v8hiv16qi): Likewise.
(altivec_vperm_<mode>v16q): Likewise.
(altivec_vperm_<mode>_uns): Likewise.
(vperm_v8hiv4si): Likewise.
(vperm_v16qiv8hi): Likewise.
* doc/md.texi (RS/6000 constraints): Document wo constraint.
[gcc/testsuite]
2016-01-04 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/p9-permute.c: New test for xxperm code
generation.
Eric Botcazou [Mon, 4 Jan 2016 08:06:52 +0000 (08:06 +0000)]
re PR target/69072 (ICE in function_arg_record_value on 7th packed structure)
PR target/69072
* config/sparc/sparc.c (scan_record_type): Take into account subfields
to compute the PACKED_P predicate.
(function_arg_record_value): Minor tweaks.
gcc/
* doc/extend.texi (Common Function Attributes): Move docs for
MSP430-specific attributes to....
(MSP430 Function Attributes): ...here. Delete the redundant
entries and copy-edit the remaining text.
(MSP430 Variable Attributes): Use uniform format for index
entries and add a cross-reference to the corresponding function
attribute docs.
Jakub Jelinek [Fri, 1 Jan 2016 11:55:59 +0000 (12:55 +0100)]
re PR tree-optimization/69070 (ICE: tree check: expected real_cst, have ssa_name in gimple_expand_builtin_pow, at tree-ssa-math-opts.c:1541 with -fsignaling-nans and powl())
PR tree-optimization/69070
* tree-ssa-math-opts.c (gimple_expand_builtin_pow): Only test
REAL_VALUE_ISSIGNALING_NAN on arg0 if arg0 is a REAL_CST.
Jakub Jelinek [Thu, 31 Dec 2015 23:51:50 +0000 (00:51 +0100)]
re PR target/69015 (ICE: RTL check: expected code 'code_label', have 'return' in find_cond_trap, at ifcvt.c:3715 with -fno-if-conversion and __builtin_trap())
PR target/69015
* ifcvt.c (find_cond_trap): Give up if returnjump_p (jump).
Jerry DeLisle [Wed, 30 Dec 2015 22:10:13 +0000 (22:10 +0000)]
re PR libfortran/68987 (double free or corruption in _gfortran_st_write_done when a write statement to an internal file uses an invalid format and the ERR= specifier appears.)
2015-12-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/68987
* gfortran.dg/error_format_2.f90: New test.
Michael Meissner [Tue, 29 Dec 2015 17:15:14 +0000 (17:15 +0000)]
rs6000.c (init_float128_ieee): Remove IEEE 128-bit comparison functions in cmp_optab and ucmp_optab.
2015-12-29 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (init_float128_ieee): Remove IEEE 128-bit
comparison functions in cmp_optab and ucmp_optab.
(rs6000_generate_compare): Rewrite IEEE 128-bit floating point
software emulation comparisons to only use __eqkf2, __gekf2,
__lekf2, and __unordkf2 functions.
(rs6000_invalid_binary_op): Add support for -mfloat128-convert.
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
__FLOAT128_HARDWARE__ if hardware IEEE 128-bit support is
available.
* config/rs6000/rs6000.opt (-mfloat128-convert): Add debug switch
to allow IBM extended double and IEEE 128-bit floating point to be
converted with default conversions.
* config/rs6000/rs6000.md (extendkftf2): Add converters between
KFmode and TFmode if -mabi=ieeelongdouble.
(trunctfkf2): Likewise.
(ieee128_mfvsrd): Split 64-bit integer conversions into 32-bit and
64-bit insns.
(ieee128_mfvsrd_64bit): Likewise.
(ieee128_mfvsrd_32bit): Likewise.
(ieee128_mtvsrd): Likewise.
(ieee128_mtvsrd_64bit): Likewise.
(ieee128_mtvsrd_32bit): Likewise.
* doc/extend.texi (Floating Types): Document that complex
__float128 does not work currently.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document that
-mfloat128 is only supported on PowerPC 64-bit Linux systems.
re PR fortran/69011 ([OOP] ICE in gfc_advance_chain for ALLOCATE with SOURCE)
gcc/testsuite/ChangeLog:
2015-12-29 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/69011
* gfortran.dg/allocate_with_source_16.f90: New test.
gcc/fortran/ChangeLog:
2015-12-29 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/69011
* trans-stmt.c (gfc_trans_allocate): Unwrap a NOP_EXPR to make sure
the actual type of the source=-expr is used when it is of class type.
Furthermore prevent an ICE.
Jerry DeLisle [Tue, 29 Dec 2015 05:17:42 +0000 (05:17 +0000)]
re PR libfortran/68987 (double free or corruption in _gfortran_st_write_done when a write statement to an internal file uses an invalid format and the ERR= specifier appears.)
Patrick Palka [Mon, 28 Dec 2015 22:00:14 +0000 (22:00 +0000)]
Tweak the documentation of libiberty's xcrc32 function
libiberty/ChangeLog;
* crc32.c: In the documentation, don't refer to GDB's
now-nonexistent crc32 implementation. In the table-generation
program embedded within the documentation, change the type of
the induction variables i and j from int to unsigned int, to
avoid undefined behavior.