If we compile the openacc testcase with -fopenacc -O2, we run into a SIGSEGV
or assert. The root cause for this is that pass_thread_jumps breaks the
invariant that OACC_FORK and OACC_JOIN mark the start and end of a
single-entry-single-exit region.
Fix this by bailing out when encountering an IFN_UNIQUE in
thread_jumps::profitable_jump_thread_path.
Bootstrapped and reg-tested on x86_64.
Build and reg-tested libgomp on x86_64 with nvptx accelerator.
2019-06-15 Tom de Vries <tdevries@suse.de>
PR tree-optimization/90009
* tree-ssa-threadbackward.c (thread_jumps::profitable_jump_thread_path):
Return NULL if bb contains IFN_UNIQUE.
* testsuite/libgomp.oacc-c-c++-common/pr90009.c: New test.
From-SVN: r272321
2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org>
* arith.c (arith_power): Rework overflow of an integer to an integer
exponent.
2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.dg/integer_exponentiation_4.f90: Update test.
* gfortran.dg/integer_exponentiation_5.F90: Ditto.
* gfortran.dg/no_range_check_1.f90: Ditto.
From-SVN: r272320
This expands to both CC and CCUNS, it's useful for isel for example.
* config/rs6000/rs6000.md (CCEITHER): New define_mode_iterator.
(un): New define_mode_attr.
(isel_signed_<mode>, isel_unsigned_<mode>): Delete, merge into ...
(isel_<un>signed_<GPR:mode>): ... this. New define_insn.
(isel_reversed_signed_<mode>, isel_reversed_unsigned_<mode>): Delete,
merge into ...
(isel_reversed_<un>signed_<GPR:mode>): ... this. New define_insn.
From-SVN: r272319
This change adds RejectNegative in a number of places it was needed,
reorders the opts into two groups (one general and one driver-only).
We also add a minimal description to each opt, and note some that
are now obsolete. The only functional change is to permit
-mtarget-linker= as an alias of -mtarget-linker.
gcc/
2019-06-14 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.opt: Add RejectNegative where needed, reorder
and add minimal functional descriptions.
From-SVN: r272308
2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89646
* dependency.c (gfc_check_argument_var_dependency): Suppress spurious
warnings by comparing variable names.
2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89646
* gfortran.dg/pr89646.f90: New test.
From-SVN: r272307
locate_and_pad_parm is called when expanding function call from
initialize_argument_information and when generating function body
from assign_parm_find_entry_rtl:
/* Remember if the outgoing parameter requires extra alignment on the
calling function side. */
if (crtl->stack_alignment_needed < boundary)
crtl->stack_alignment_needed = boundary;
if (crtl->preferred_stack_boundary < boundary)
crtl->preferred_stack_boundary = boundary;
stack_alignment_needed and preferred_stack_boundary should be updated
only when expanding function call, not when generating function body.
Add update_stack_alignment_for_call to update stack alignment when
outgoing parameter is passed in the stack.
gcc/
PR rtl-optimization/90765
* calls.c (update_stack_alignment_for_call): New function.
(expand_call): Call update_stack_alignment_for_call when
outgoing parameter is passed in the stack.
(emit_library_call_value_1): Likewise.
* function.c (locate_and_pad_parm): Don't update
stack_alignment_needed and preferred_stack_boundary.
gcc/testsuite/
PR rtl-optimization/90765
* gcc.target/i386/pr90765-1.c: New test.
* gcc.target/i386/pr90765-2.c: Likewise.
From-SVN: r272296
As GCC now provides builtins for doing integer overflow checking, lets
use it when checking for overflow in xmallocarray.
Regtested on x86_64-pc-linux-gnu.
libgfortran/ChangeLog:
2019-06-14 Janne Blomqvist <jb@gcc.gnu.org>
* runtime/memory.c (SIZE_MAX):Remove macro definition.
(xmallocarray): Use __builtin_mul_overflow.
From-SVN: r272295
Since inline_secondary_memory_needed has
/* ??? This is a lie. We do have moves between mmx/general, and for
mmx/sse2. But by saying we need secondary memory we discourage the
register allocator from using the mmx registers unless needed. */
if (MMX_CLASS_P (class1) != MMX_CLASS_P (class2))
return true;
moves between MMX and non-MMX units require secondary memory. There
is no need to check moves between MMX and integer units.
struct processor_costs has:
const int mmxsse_to_integer; /* cost of moving mmxsse register to
integer. */
const int ssemmx_to_integer; /* cost of moving integer to mmxsse register. */
This patch also renames mmxsse_to_integer to sse_to_integer and
ssemmx_to_integer to integer_to_sse.
Tested on Linux/x86-64.
PR target/90877
* config/i386/i386-features.c
(dimode_scalar_chain::compute_convert_gain): Replace
mmxsse_to_integer with sse_to_integer.
* config/i386/i386.c (ix86_register_move_cost): Verify that
moves between MMX and non-MMX units require secondary memory.
Correct costs of moves between SSE and integer units.
* config/i386/i386.h (processor_costs): Rename cost of moving
SSE register to integer to sse_to_integer. Rename cost of
moving integer register to SSE to integer_to_sse.
From-SVN: r272294
This is a roll-up of a set of changes needed to support the Arm EABI on NetBSD.
2019-06-14 Matt Thomas <matt@3am-software.com>
Matthew Green <mrg@eterna.com.au>
Nick Hudson <skrll@netbsd.org>
Maya Rashish <coypu@sdf.org>
Richard Earnshaw <rearnsha@arm.com>
gcc:
* config.gcc (arm*-*-netbsdelf*) Add support for EABI configuration.
* config.host (arm*-*-netbsd*): Use driver-arm.o on native NetBSD.
* config/arm/netbsd-eabi.h: New file.
* config/arm/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Undefine before
redefining.
(SUBTARGET_EXTRA_ASM_SPEC): Don't pass -matpcs to the assembler.
* config/netbsd-elf.h (NETBSD_LINK_LD_ELF_SO_SPEC): New define.
(NETBSD_SUBTARGET_EXTRA_SPECS): New define.
(SUBTARGET_EXTRA_SPECS): Define to NETBSD_SUBTARGET_EXTRA_SPECS.
libatomic:
* configure.tgt (arm*): Handle NetBSD in the same way as FreeBSD.
libgcc:
* config.host (arm*-*-netbsdelf*): Add support for EABI configurations.
* config/arm/t-netbsd (LIB1ASMFUNCS): Add some additional assembler
functions to build.
* config/arm/t-netbsd-eabi: New file.
Co-Authored-By: Matthew Green <mrg@eterna.com.au>
Co-Authored-By: Maya Rashish <coypu@sdf.org>
Co-Authored-By: Nick Hudson <skrll@netbsd.org>
Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>
From-SVN: r272290
The problem here is that when processing direct-initialization of a data
member, we don't need to worry about destruction semantics; that will be
handled in the [cd]tor. Conveniently, we already have tf_no_cleanup from a
similar fix to new-expressions.
* typeck2.c (digest_nsdmi_init): Set tf_no_cleanup for direct-init.
From-SVN: r272287
2019-06-14 Richard Biener <rguenther@suse.de>
* tree-loop-distribution.c (classify_partition): Return
whether a reduction appeared in all partitions and do not
stop builtin detection because of this.
(distribute_loop): Sort a non-builtin partition last if
there's a reduction in all partitions and make sure the
partition prevailing as last is not a builtin.
* gcc.dg/tree-ssa/ldist-26.c: Adjust.
From-SVN: r272284
* config/i386/i386.md (SWIM1248s): Rename from SWIM1248x.
Update all uses.
(and<mode>3): Use gen_extend_insn instead of indirect functions.
Do not generate DImode extends for 32bit targets.
(and->zext post-reload splitter): Use gen_extend_insn
instead of indirect functions.
(anddi->zext pre-reload splitter): New.
* config/i386/i386-expand.c (ix86_expand_int_sse_cmp):
Use gen_sub3_insn instead of indirect function.
(ix86_expand_ashl_const): Use gen_add2_insn instead of
indirect function.
(ix86_adjust_counter): Ditto.
From-SVN: r272270
For PR target/63810 some improvements were made in the parsing of
the version string at the point it's used to define the built-in
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__. This is fine, but the
specs processing also uses the version, and specs version-compare
doesn't like leading zeros on components. This means that while we
succeed in processing -mmacosx-version-min=010.00002.000099 on compile
lines, it fails for any other line that uses the value as part of a spec
(in particular, link lines fail).
To fix this, we need to apply a bit of clean-up to the version that's
presented to the driver, and push that back into the command line opts.
The value can come from four places:
1. User-entered on the command line
2. User-entered as MACOSX_DEPLOYMENT_TARGET= environment var.
3. Absent those two
3a For self-hosting systems, look-up from the kernel
3b For cross-compilers, as a default supplied at configure time.
We apply the clean-up to all 4 (although it shouldn't really be needed
for the cases under 3).
We also supply a test-case that adapts to the target-version of the
system, so that the link requirements are met by the SDK in use (if you
try to link i686-darwin9 on an x86-64-darwin18 SDK, it will fail).
gcc/
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin-driver.c (validate_macosx_version_min): New.
(darwin_default_min_version): Cleanup and validate supplied version.
(darwin_driver_init): Likewise and push cleaned version into opts.
gcc/testsuite/
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/darwin-minversion-link.c: New test.
From-SVN: r272260
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68544
* resolve.c (is_dt_name): New function to compare symbol name against
list of derived types.
(resolve_actual_arglist): Use it to find wrong code.
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68544
* gfortran.dg/pr68544.f90: New test.
* gfortran.dg/pr85687.f90: Modify test for new error message.
From-SVN: r272259
This test fails for Darwin m32 because it's scanning for absence
of an instruction that's validly used in PIC code. Fixed, in this
case, by using non-PIC codegen.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* g++.dg/pr71694.C: Use non-PIC codegen for Darwin m32.
From-SVN: r272257
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89344
* expr.c (gfc_check_vardef_context): Check for INTENT(IN) variable
in SELECT TYPE construct.
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89344
* gfortran.dg/pr89344.f90: New test.
From-SVN: r272255
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88810
* dependency.c (gfc_dep_resolver): Re-arrange code to make the logic
a bit more transparent. Fix 2 nearby formatting issues.
From-SVN: r272254
Newer OS versions (10.14+) do not provide some of the CRTs that are used
for older ones (e.g. 10.5), and thus link tests that specify targeting
such a revision fail. We retain the testing of the correct defined OS
version number but switch to compile-only testing for these two tests.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/darwin-minversion-1.c: Use compile rather than link/run.
* gcc.dg/darwin-minversion-2.c: Likewise.
From-SVN: r272251
This test fails on Darwin because it requires alias support, so
add the relevant dg-requires.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/pr90760.c: Require alias support.
From-SVN: r272248
PR tree-optimize/90869
* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Watch for view
converts in MEM_REF referencing decl rather than view converts
from decl type to MEM_REF type.
* g++.dg/tree-ssa/alias-access-path-1.C: New testcase.
From-SVN: r272247
2019-06-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/90856
* tree-sra.c (build_ref_for_model): Only use
build_reconstructed_reference when address-spaces are the same.
* gcc.target/i386/pr90856.c: New testcase.
From-SVN: r272244
* config/nvptx/nvptx.c (nvptx_sese_number, nvptx_sese_pseudo): Don't
wrap ei variable name in the declaration in ()s.
(nvptx_single): Actually use mode_label variable. Formatting fix.
From-SVN: r272243
* g++.dg/tree-ssa/ssa-dse-1.C: Don't match exact number of chars of
= {} store.
* g++.dg/tree-ssa/pr31146.C: Change -fdump-tree-forwprop to
-fdump-tree-forwprop1 in dg-options. Expect <int[5]> in MEM.
From-SVN: r272240
2019-06-13 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (vect_loop_vectorized_call): Declare.
* tree-vectorizer.c (vect_loop_vectorized_call): Export and
also return the condition stmt.
* tree-vect-loop-manip.c (vect_loop_versioning): Compute outermost
loop we can version and version that, reusing the loop version
created by if-conversion instead of versioning again.
* gcc.dg/vect/vect-version-1.c: New testcase.
* gcc.dg/vect/vect-version-2.c: Likewise.
From-SVN: r272239
/cp
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Use id_loc in five additional places
in the last part of the function.
/testsuite
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/variably-modified-type-1.C: New.
* g++.dg/cpp0x/alias-decl-1.C: Test the location too.
* g++.dg/other/pr84792-1.C: Likewise.
* g++.dg/other/pr84792-2.C: Likewise.
* g++.dg/parse/error24.C: Likewise.
* g++.dg/parse/error32.C: Likewise.
* g++.dg/parse/error33.C: Likewise.
* g++.dg/parse/saved1.C: Likewise.
* g++.dg/template/operator6.C: Likewise.
* g++.dg/template/pr61745.C: Likewise.
* g++.dg/template/typedef41.C: Likewise.
* g++.old-deja/g++.jason/crash10.C: Likewise.
/cp
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Move further up the declaration of
id_loc, use it immediately, update its value after the loop
over declarator, use it again in the final part of function;
improve locations of error messages about multiple data types
and conflicting specifiers.
/testsuite
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/conflicting-specifiers-1.C: New.
* g++.dg/diagnostic/two-or-more-data-types-1.C: Likewise.
* g++.dg/parse/error10.C: Adjust location.
* g++.dg/parse/pragma2.C: Likewise.
From-SVN: r272236
gcc/ChangeLog:
2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
PR target/88838
* tree-vect-loop-manip.c (vect_set_loop_masks_directly): If the
compare_type is not with Pmode size, we will create an IV with
Pmode size with truncated use (i.e. converted to the correct type).
* tree-vect-loop.c (vect_verify_full_masking): Find IV type.
(vect_iv_limit_for_full_masking): New. Factored out of
vect_set_loop_condition_masked.
* tree-vectorizer.h (LOOP_VINFO_MASK_IV_TYPE): New.
(vect_iv_limit_for_full_masking): Declare.
gcc/testsuite/ChangeLog:
2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
PR target/88838
* gcc.target/aarch64/pr88838.c: New test.
* gcc.target/aarch64/sve/while_1.c: Adjust.
From-SVN: r272233
* io.c (check_format): Use G_(...) instead of _(...) for error values,
append " in format string at %L" to all strings but unexpected_element,
use error as gfc_error formating string instead of
"%s in format string at %L". Formatting fixes.
From-SVN: r272222
PR c++/90832 - endless recursion when evaluating sizeof.
* constexpr.c (cxx_eval_constant_expression): Don't recurse on the
result of fold_sizeof_expr if is returns a SIZEOF_EXPR.
* typeck.c (cxx_sizeof_expr): Only return a SIZEOF_EXPR if the operand
is instantiation-dependent.
* g++.dg/cpp0x/constexpr-sizeof2.C: New test.
* g++.dg/cpp0x/constexpr-sizeof3.C: New test.
From-SVN: r272221