2016-12-01 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78279
* dependency.c (identical_array_ref): Convert gcc_assert to conditional
and gfc_internal_error.
2016-12-01 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78279
* gfortran.dg/pr78279.f90: New test.
From-SVN: r243131
As of https://golang.org/cl/32917 we can put slice initializers in the
.data section. The program can still change the values in those
slices. That means that if the slice elements can contain pointers,
we need to register the entire initializer as a GC root.
This would be straightforward except that we only have a Bexpression
for the slice initializer, not an Expression. So introduce a
Backend_expression type that wraps a Bexpression as an Expression.
The test case for this is https://golang.org/cl/33790.
Reviewed-on: https://go-review.googlesource.com/33792
From-SVN: r243129
Using bootstrap-ubsan gcc to build mplayer shows:
tree-ssa-loop-prefetch.c:835:16: runtime error: signed integer overflow:
288230376151711743 * 64 cannot be represented in type 'long int'
Here signed und unsigned integers are mixed in a division resulting in
bogus values: (-83 + 64ULL -1) / 64ULL) == 288230376151711743
Fixed by casting the unsigned parameter to signed.
PR tree-optimization/78598
* tree-ssa-loop-prefetch.c (ddown): Cast to signed to avoid
overflows.
From-SVN: r243113
<toplevel>
* configure.ac: Don't use pkg-config to check for bdw-gc.
* configure: Regenerate.
config/
* pkg.m4: Remove.
libobjc/
* configure.ac: Don't use pkg-config to check for bdw-gc.
* configure: Regenerate.
gcc/
* doc/install.texi: Don't use pkg-config to check for bdw-gc.
From-SVN: r243108
2016-12-01 Richard Biener <rguenther@suse.de>
* tree-ssa-alias.c (indirect_refs_may_alias_p): Do not
treat arrays with same type as objects that cannot overlap.
* gcc.dg/torture/alias-2.c: New testcase.
From-SVN: r243107
2016-12-01 Richard Biener <rguenther@suse.de>
* tree-ssa-alias.c (indirect_refs_may_alias_p): Do not
treat arrays with same type as objects that cannot overlap.
* gcc.dg/torture/alias-2.c: New testcase.
From-SVN: r243106
PR debug/78587
* dwarf2out.c (loc_descr_plus_const): For negative offset use
uint_loc_descriptor instead of int_loc_descriptor and perform negation
in unsigned HOST_WIDE_INT type.
(scompare_loc_descriptor): Shift UINTVAL left instead of INTVAL.
* gcc.dg/debug/pr78587.c: New test.
From-SVN: r243100
PR target/78614
* config/rs6000/rs6000.c (rs6000_frame_related): Call
set_used_flags (pat) before any simplifications. Clear used flag on
PARALLEL copy. Don't guard add_reg_note call. Call
copy_rtx_if_shared on pat before storing it into
REG_FRAME_RELATED_EXPR.
From-SVN: r243099
The convertible_to traits need to use a variadic catch-all for the
false-cases.
* include/std/istream (__is_convertible_to_basic_istream):
Change the parameter of the false-case of __check to a variadic.
* include/std/ostream (__is_convertible_to_basic_ostream):
Likewise.
From-SVN: r243098
The library initialization code in go-libmain.c sets the C variable
runtime_isarchive but failed to set the Go variable runtime.isarchive.
We don't currently have a way to let C code access an unexported Go
variable, but fortunately the only time the Go function initsig is
called with an argument of true is exactly where we want to set
isarchive. So let initsig do it.
Reviewed-on: https://go-review.googlesource.com/33753
From-SVN: r243094
PR libstdc++/71500
* include/bits/regex.h (basic_regex::basic_regex): Use ECMAScript
when the syntax is not specified.
* include/bits/regex_compiler.h (_RegexTranslator,
_RegexTranslatorBase): Partially support icase in ranges.
* include/bits/regex_compiler.tcc (_BracketMatcher::_M_apply):
Refactor _M_apply to make the control flow easier to follow, and
call _M_translator._M_match_range as added previously.
* testsuite/28_regex/traits/char/icase.cc: Add new tests.
* testsuite/28_regex/traits/char/user_defined.cc: Add new tests.
From-SVN: r243093
After an unconditional trap there should be a barrier. In most cases
one is automatically inserted, but not if the trap is the final insn in
the instruction stream. We need to emit one explicitly.
PR rtl-optimization/78607
* combine.c (try_combine): Emit a barrier after a unconditional trap.
gcc/testsuite/
PR rtl-optimization/78607
* gcc.c-torture/compile/pr78607.c: New testcase.
From-SVN: r243092
Since gccgo can trace back through C code as easily as Go code, we
should print C functions in the traceback.
This worked before https://golang.org/cl/31230 for a dumb reason. The
default value for runtime.traceback_cache was, and is, 2 << 2, meaning
to print all functions. The old C code for runtime_parsedebugvars
would return immediately and do nothing if the environment variable
GODEBUG was not set (if GODEBUG was set it would later call
setTraceback. The new Go code for runtime.parsedebugvars does not
return immediately if GODEBUG is not set, and always calls
setTraceback. Either way, if GOTRACEBACK is not set, setTraceback
would set traceback_cache to 1 << 2, meaning to only print non-runtime
functions and having the effect of not printing plain C functions.
Keep the current handling of GODEBUG/GOTRACEBACK, which matches the gc
library, but add an extra check to print C functions by default.
Reviewed-on: https://go-review.googlesource.com/33717
From-SVN: r243083
2016-11-30 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/78602
* config/rs6000/rs6000.c (rs6000_expand_vector_extract): If the
element is not a constant or in a register, force it to a
register.
PR target/78560
* config/rs6000/rs6000.c (rs6000_expand_vector_set): Force value
that will be set to a vector element to be in a register.
* config/rs6000/vsx.md (vsx_set_<mode>_p9): Fix thinko that used
the wrong multiplier to convert the element number to a byte
offset.
From-SVN: r243044
* config/nvptx/env.c: Delete.
* icv.c: Move definitions of ICV variables back ...
* env.c: ...here. Do not compile environment-related functionality if
LIBGOMP_OFFLOADED_ONLY is set.
From-SVN: r243041
* configure.ac [nvptx*-*-*] (libgomp_offloaded_only): Set and use it...
(LIBGOMP_OFFLOADED_ONLY): ...here; new define.
* configure: Regenerate.
* config.h.in: Likewise.
From-SVN: r243040
2016-11-30 Vladimir Makarov <vmakarov@redhat.com>
PR tree-optimization/77856
* lra-constraints.c (inherit_in_ebb): Check original regno for
invalid invariant regs too. Set only clobbered hard regs for the
invalid invariant regs.
2016-11-30 Vladimir Makarov <vmakarov@redhat.com>
PR tree-optimization/77856
* gcc.target/i386.c (pr77856.c): New.
From-SVN: r243038
2016-11-30 Matthias Klose <doko@ubuntu.com>
* configure.ac: Set BDW_GC_CFLAGS and BDW_GC_LIBS after checking
for the existence of the pkg-config modules.
* Regenerate.
From-SVN: r243037
* include/std/istream (__is_convertible_to_basic_istream):
Change the return types of __check, introduce istream_type.
(operator>>(_Istream&&, _Tp&&)):
Use __is_convertible_to_basic_istream::istream_type as the return type.
* include/std/ostream (__is_convertible_to_basic_ostream):
Change the return types of __check, introduce ostream_type.
(operator>>(_Ostream&&, _Tp&&)):
Use __is_convertible_to_basic_ostream::ostream_type as the return type.
From-SVN: r243036
In the testcase, IRA propagates a constant into a TRAP_IF insn, which
then becomes an unconditional trap. Unconditional traps are control
flow insns so doing this requires surgery on the cfg. We cannot do
that here, so instead refuse to do the substitution.
PR rtl-optimization/78610
* ira.c (combine_and_move_insns): Don't substitute into TRAP_IF
instructions.
gcc/testsuite/
PR rtl-optimization/78610
* gcc.c-torture/compile/pr78610.c: New testcase.
From-SVN: r243028