Age | Commit message (Collapse) | Author | Files | Lines |
|
from -O3 or later section to -O2 or...
* opts.c (default_options_table): Move -ftree-loop-distribute-patterns
entry from -O3 or later section to -O2 or later section.
* doc/invoke.texi (-ftree-loop-distribute-patterns): Mention the
option is enabled by default at -O2+ rather than just at -O3.
From-SVN: r279267
|
|
fortran/trans-openmp.c:3769)
PR fortran/92899
* trans-openmp.c (gfc_trans_omp_atomic): For GFC_OMP_ATOMIC_SWAP,
do look through conversion on expr2 if any.
* testsuite/libgomp.fortran/atomic1.f90: New test.
From-SVN: r279266
|
|
PR target/92723
* tree-vect-patterns.c (vect_recog_rotate_pattern): If dt is not
vect_internal_def, use oprnd1 as is, without trying to cast it.
Formatting fix.
* gcc.dg/vect/pr92723.c: New test.
From-SVN: r279265
|
|
destination.
gcc/ChangeLog:
* builtins.c (compute_objsize): Add an argument and set it to offset
into destination.
* builtins.h (compute_objsize): Add an argument.
* tree-object-size.c (addr_object_size): Add an argument and set it
to offset into destination.
(compute_builtin_object_size): Same.
* tree-object-size.h (compute_builtin_object_size): Add an argument.
* tree-ssa-strlen.c (get_addr_stridx): Add an argument and set it
to offset into destination.
(maybe_warn_overflow): New function.
(handle_store): Call maybe_warn_overflow to issue warnings.
gcc/testsuite/ChangeLog:
* c-c++-common/Wstringop-overflow-2.c: Adjust text of expected messages.
* g++.dg/warn/Wstringop-overflow-3.C: Same.
* gcc.dg/Wstringop-overflow-17.c: Same.
From-SVN: r279248
|
|
fortran/array.c:864)
2019-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/92897
* array.c (gfc_set_array_spec): Remove invalid assert() triggered
by invalid Fortran code.
2019-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/92897
* gfortran.dg/pr92897.f90: New test.
From-SVN: r279247
|
|
ChangeLog:
2019-12-11 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config-ml.in (msp430-*-*): Support --disable-no-exceptions configure
flag.
gcc/ChangeLog:
2019-12-11 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.h (STARTFILE_SPEC) [!fexceptions]: Use
crtbegin_no_eh.o if building for the C language.
[fno-exceptions]: Use crtbegin_no_eh.o if building for any language
except C.
(ENDFILE_SPEC) [!fexceptions]: Use crtend_no_eh.o if building for
the C language.
[fno-exceptions]: Use crtend_no_eh.o if building for any language
except C.
* config/msp430/t-msp430: Add -fno-exceptions multilib.
* doc/install.texi: Document --disable-no-exceptions multilib configure
option.
* doc/sourcebuild.texi: Document exceptions_enabled effective target.
gcc/testsuite/ChangeLog:
2019-12-11 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* lib/gcc-dg.exp: Add dg-prune messages for when exception handling is
disabled.
* lib/target-supports.exp (check_effective_target_exceptions_enabled):
New.
libgcc/ChangeLog:
2019-12-11 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config.host: Add crt{begin,end}_no_eh.o to "extra_parts".
* config.host (msp430*-*-elf): Add crt{begin,end}_no_eh.o to
"extra_parts".
From-SVN: r279246
|
|
This patch provides a way to clone a pretty_printer.
This is needed so that we can capture text in a label_text and make
layout decisions based on it, using the policy of global_dc's printer,
whilst within a call to diagnostic_show_locus. We can't print with
the pretty_printer itself within a call to diagnostic_show_locus since
it has partly-buffered content.
gcc/c-family/ChangeLog:
* c-pretty-print.c (c_pretty_printer::clone): New vfunc
implementation.
* c-pretty-print.h (c_pretty_printer::clone): New vfunc decl.
gcc/cp/ChangeLog:
* cxx-pretty-print.c (cxx_pretty_printer::clone): New vfunc
implementation.
* cxx-pretty-print.h (cxx_pretty_printer::clone): New vfunc decl.
* error.c (cxx_format_postprocessor::clone): New vfunc.
gcc/ChangeLog:
* pretty-print.c (pretty_printer::pretty_printer): New copy-ctor.
(pretty_printer::clone): New vfunc implementation.
* pretty-print.h (format_postprocessor::clone): New pure vfunc
decl.
(pretty_printer::pretty_printer): New copy-ctor decl.
(pretty_printer::clone): New vfunc decl.
From-SVN: r279244
|
|
This is used by new selftests in the analyzer patch kit.
gcc/ChangeLog:
* function-tests.c (selftest::make_fndecl): Make non-static.
* selftest.h (selftest::make_fndecl): New decl.
From-SVN: r279242
|
|
explicitly defaulted ctors are added))
PR c++/92869
* class.c (finish_struct): For C++17 and earlier, check
type_has_user_provided_or_explicit_constructor rather than
TYPE_HAS_USER_CONSTRUCTOR whether to set CLASSTYPE_NON_AGGREGATE.
* g++.dg/cpp0x/aggr3.C: New test.
From-SVN: r279241
|
|
Ville pointed out that our paren init of aggregates doesn't work for
auto a = new A(1, 2, 3);
and I think it should:
A new-expression that creates an object of type T initializes that object
as follows:
...
-- Otherwise, the new-initializer is interpreted according to the
initialization rules of [dcl.init] for direct-initialization.
so I think it follows that we should perform dcl.init#17.6.2.2.
This doesn't work with new[]; we have:
error ("parenthesized initializer in array new");
* init.c (build_new_1): Handle parenthesized initialization of
aggregates in new-expression.
* g++.dg/cpp2a/paren-init20.C: New test.
From-SVN: r279240
|
|
From-SVN: r279239
|
|
The primary change here is to do the CPP_DECLTYPE replacement even when we
get an error, so we don't keep trying and giving the same parse error each
time. We also commit to the tentative firewall parse more often, leading to
better diagnostics.
* parser.c (cp_parser_decltype_expr): Don't tentative_firewall here.
(cp_parser_decltype): Do it here. Remember a non-tentative error.
From-SVN: r279237
|
|
build_new_1 already passes tf_no_cleanup to build_value_init, but in this
testcase we end up calling build_value_init by way of
build_special_member_call, so we need to pass it to that function as well.
* init.c (build_new_1): Also pass tf_no_cleanup to
build_special_member_call.
From-SVN: r279236
|
|
Missing error-recovery code. While I was poking at this I also figured we
don't need to iterate over the members of a union.
* method.c (comp_info::~comp_info): Factor out of...
(build_comparison_op): Here. Handle error return from build_new_op.
From-SVN: r279235
|
|
We also need unlowered_expr_type when considering associated types for ADL.
* name-lookup.c: Use unlowered_expr_type.
From-SVN: r279229
|
|
Another place we need to look through the VIEW_CONVERT_EXPR we add to make a
use of a class NTTP have const type.
* pt.c (deducible_expression): Look through VIEW_CONVERT_EXPR.
From-SVN: r279228
|
|
gcc/testsuite/ChangeLog:
* gcc.dg/Wstringop-overflow-26.c: New test.
From-SVN: r279227
|
|
2019-12-11 Lewis Hyatt <lhyatt@gmail.com>
PR 91853
* pretty-print.c (pp_quoted_string): Avoid hex-escaping valid
multibyte input. Fix off-by-one-bug printing the last byte before a
hex-escaped output.
(pp_character): Don't apply line wrapping in the middle of multibyte
characters.
(test_utf8): New test.
(pretty_print_c_tests): Call the new test.
From-SVN: r279226
|
|
gcc/testsuite/ChangeLog:
2019-12-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
* gcc.dg/vect/vect-epilogues.c: Remove xfail for arm.
From-SVN: r279225
|
|
-mfloat-abi=soft
When a CPU such as cortex-a55 is used with the soft-float ABI variant,
the compiler is incorrectly issuing a warning about a mismatch between
the architecture (generated internally) and the CPU. This is not
expected or intended.
The problem stems from the fact that we generate (correctly) an
architecture for a soft-float compilation, but then try to compare it
against the one recorded for the CPU. Normally we strip out the
floating point information before doing that comparison, but we
currently only do that for the features that can be affected by the
-mfpu option. For a soft-float environment we also need to strip out
any bits that depend on having floating-point present.
So this patch implements that and does a bit of housekeeping at the
same time:
- in arm-cpus.in it is not necessary for a CPU to specify both
+dotprod and +simd in its architecture specification, since +dotprod
implies +simd.
- I've refactored the ALL_SIMD fgroup in arm-cpus.in to create a new
subgroup ALL_SIMD_EXTERNAL and containing the bits that were
previously added directly to ALL_SIMD. Similarly, I've added an
ALL_FPU_EXTERNAL subgroup.
- in arm.c rename fpu_bitlist and all_fpubits to fpu_bitlist_internal
and all_fpubits_internal for consistency with the fgroup bits which
they contain.
* config/arm/arm-cpus.in (ALL_SIMD_EXTERNAL): New fgroup.
(ALL_SIMD): Use it.
(ALL_FPU_EXTERNAL): New fgroup.
(ALL_FP): Use it.
(cortex-a55, cortex-a75, cortex-a76, cortex-a76ae): Remove redundant
+simd from architecture specification.
(cortex-a77, neoverse-n1, cortex-a75.cortex-a55): Likewise.
* config/arm/arm.c (isa_all_fpubits, fpu_bitlist): Rename to ...
(isa_all_fpubits_internal, fpu_bitlist_internal): ... these.
(isa_all_fpbits): New bitmap.
(arm_option_override): Initialize it.
(arm_configure_build_target): If the target isa does not have any
FP enabled, do not warn about mismatches in FP-related feature bits.
From-SVN: r279219
|
|
2019-12-11 Stam Markianos-Wright <stam.markianos-wright@arm.com>
* real.c (struct arm_bfloat_half_format,
encode_arm_bfloat_half, decode_arm_bfloat_half): New.
* real.h (arm_bfloat_half_format): New.
From-SVN: r279216
|
|
The columns of the clause locations that are reported for C and C++ are
different and hence we need separate test expectations for both languages.
2019-12-11 Frederik Harwath <frederik@codesourcery.com>
PR other/92901
/gcc/testsuite/
* c-c++-common/clause-locations.c: Adjust test expectation for C++.
From-SVN: r279215
|
|
gcc/
PR target/92865
* config/i386/i386-expand.c (ix86_valid_mask_cmp_mode): Enable
integer mask cmov when available even with TARGET_XOP.
gcc/testsuite
* gcc.target/i386/pr92865-1.c: New test.
From-SVN: r279214
|
|
From-SVN: r279210
|
|
package
When a type descriptor is needed (for e.g. interface conversion),
if the type is a pointer to a named type defined in another
package, we don't generate the definition of the type descriptor
because it is generated in the package where the type is defined.
However, if the named type is an alias to an unnamed type, its
descriptor is not generated in the other package, and we need to
generate it.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210787
From-SVN: r279207
|
|
PR tree-optimization/92891
* builtins.c (gimple_call_alloc_size): Convert size to sizetype
before returning it.
* gcc.c-torture/compile/pr92891.c: New test.
From-SVN: r279205
|
|
powerpc64le-linux-gnu)
2019-12-10 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/92796
* lra-int.h (lra_risky_transformations_p): Rename to
check_and_force_assignment_correctness_p.
* lra-assigns.c: Ditto.
(lra_assign): Reset check_and_force_assignment_correctness_p.
* lra-constraints.c (lra_risky_transformations_p): Rename to
check_and_force_assignment_correctness_p.
(lra_constraints): Set up check_and_force_assignment_correctness_p
only for the 1st sub-pass.
* lra-eliminations.c (process_insn_for_elimination): Set up
check_and_force_assignment_correctness_p if the insn chnaged its
code.
2019-12-10 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/92796
* gcc.target/powerpc/pr92796.c: New test.
From-SVN: r279204
|
|
fortran/trans-array.c:1265)
2019-12-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/91643
* trans-array.c (gfc_conv_array_parameter): Do not repack
an assumed rank dummy argument.
2019-12-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/91643
* gfortran.dg/assumed_rank_18.f90: New test.
From-SVN: r279203
|
|
regstat.c:327 since r279124)
PR rtl-optimization/92882
* regstat.c (regstat_bb_compute_calls_crossed): Don't check
INSN_UID against DF_INSN_SIZE or use DF_INSN_INFO_GET unless
NONDEBUG_INSN_P.
* gfortran.dg/pr92882.f: New test.
From-SVN: r279196
|
|
PR ipa/92883
* ipa-cp.c (propagate_vr_across_jump_function): Pass jvr rather
than *jfunc->m_vr to intersect. Formatting fix.
* gcc.dg/ipa/pr92883.c: New test.
From-SVN: r279194
|
|
PR middle-end/92825
* cfgexpand.c (add_stack_protection_conflicts): Change return type
from void to bool, return true if at least one stack_vars[i].decl
is addressable.
(record_or_union_type_has_array_p, stack_protect_decl_p): Remove.
(expand_used_vars): Don't call stack_protect_decl_p, instead for
-fstack-protector-strong set gen_stack_protect_signal to true
if add_stack_protection_conflicts returned true. Formatting fixes.
* doc/invoke.texi (-fstack-protector-strong): Clarify that optimized
out variables or variables not living on the stack don't count.
(-fstack-protector): Likewise. Clarify it affects >= 8 byte arrays
rather than > 8 byte.
* gcc.target/i386/pr92825.c: New test.
From-SVN: r279193
|
|
(ipa_param_body_adjustments::register_replacement): Fix comment typo
- accross -> across.
* ipa-sra.c (propagate_used_across_scc_edge, ipa_sra_analysis):
Likewise.
(param_splitting_across_edge): Fix typo in dump message - accross
-> across.
From-SVN: r279188
|
|
This testcase demonstrates that looking at cand->template_decl is not a good
starting place for finding the most general template, as it is only set for
primary templates.
* call.c (cand_parms_match): Handle all templated functions.
From-SVN: r279185
|
|
In my patch to implement C++20 "structural type" I tried to set the access
flags on the artificial base fields appropriately, but failed. I was
copying TREE_PRIVATE from the binfo, but TREE_PRIVATE on binfo is just a
temporary cache for dfs_access_in_type; we really need to get the
inheritance access information from BINFO_BASE_ACCESSES.
* class.c (build_base_field_1): Take access parameter.
(build_base_field): Likewise.
(build_base_fields, layout_virtual_bases): Pass it.
* tree.c (structural_type_p): Improve private base diagnostic.
From-SVN: r279184
|
|
A call as the immediate operand of decltype is handled differently; we don't
create an object of the return type as we do normally. But in the case of a
rewritten operator, we're adding another call as a wrapper, so the inner
call doesn't get the special handling.
* call.c (build_new_op_1): Clear tf_decltype on inner call.
From-SVN: r279183
|
|
2019-12-10 Martin Liska <mliska@suse.cz>
PR fortran/92874
* dependency.c (gfc_dep_compare_expr): Bail out
when one of the arguments is null.
2019-12-10 Martin Liska <mliska@suse.cz>
PR fortran/92874
* gfortran.dg/pr92874.f90: New test.
From-SVN: r279181
|
|
2019-12-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/92863
* misc.c (gfc_typename): If derived component is NULL for
derived or class, return "invalid type" or "invalid class",
respectively.
2019-12-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/92863
* gfortran.dg/interface_45.f90: New test.
From-SVN: r279180
|
|
* cgraph.c (cgraph_node::verify_node): Verify tp_first_run.
* cgraph.h (cgrpah_node): Turn tp_first_run back to int.
* cgraphunit.c (tp_first_run_node_cmp): Do not watch for overflows.
(expand_all_functions): First expand ordered section and then
unordered.
* profile.c (compute_value_histograms): Error on out of range
tp_first_runs.
From-SVN: r279179
|
|
* cgraph.c (cgraph_node::verify_node): Verify tp_first_run.
* cgraph.h (cgrpah_node): Turn tp_first_run back to int.
* cgraphunit.c (tp_first_run_node_cmp): Do not watch for overflows.
(expand_all_functions): First expand ordered section and then
unordered.
* lto-partition.c (lto_balanced_map): Fix printing of tp_first_run.
* profile.c (compute_value_histograms): Error on out of range
tp_first_runs.
From-SVN: r279178
|
|
* predict.c (compute_function_frequency): Check for presence of IPA
profile.
From-SVN: r279177
|
|
reordering.
* varasm.c (default_function_section): Fix confused tests for
tp_first_run reordering.
From-SVN: r279176
|
|
With -msve-vector-bits=N, the payload of some partial SVE modes can
be 16 bytes or smaller, which makes them small enough to fit in a
pair of GPRs. We specifically don't want that, because the payload
is distributed evenly across the SVE register rather than collected
at one end. Marshalling it into a GPR via register operations would
be expensive.
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Don't
allow SVE modes in GPRs.
gcc/testsuite/
* gcc.target/aarch64/sve/mixed_size_7.c: New test.
From-SVN: r279174
|
|
The INDEX patterns handle partial modes by choosing the container
size rather than the element size, so that the number of lanes
(and thus number of additions) matches the mode. This means that
all VNx4 modes use .s and all VNx2 modes use .d, etc.
When adding this, I'd forgotten that the choice between Wn and Xn
registers would need to be updated to use the container size too.
For partial VNx2s, we were using .d containers with Wn rather than
Xn source registers.
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/aarch64/iterators.md (vccore): New iterator.
* config/aarch64/aarch64-sve.md (vec_series<mode>): Use it instead
of vwcore.
(*vec_series<mode>_plus): Likewise.
gcc/testsuite/
* gcc.target/aarch64/sve/mixed_size_6.c: New test.
From-SVN: r279173
|
|
Check that the column information for OpenACC clauses is communicated correctly
to the middle-end, in particular by the Fortran front-end (cf. PR 92793).
2019-12-10 Frederik Harwath <frederik@codesourcery.com>
gcc/testsuite/
* c-c++-common/goacc/clause-locations.c: New test.
* gfortran.dg/goacc/clause-locations.f90: New test.
From-SVN: r279169
|
|
Since the Fortran front-end now sets the clause locations correctly, we can
emit warnings with more precise locations if we encounter conflicting
operations for a variable in reduction clauses.
2019-12-10 Frederik Harwath <frederik@codesourcery.com>
gcc/
* omp-low.c (scan_omp_for): Use clause location in warning.
From-SVN: r279168
|
|
The dwarf2 handling of vector constants currently divides the vector
into a length (number of elements) and byte element size. This doesn't
work well for MODE_VECTOR_BOOL, where several elements are packed into
the same byte.
We should probably add a way of encoding this in future, but for now
the safest thing is to punt, like we already do for variable-length
vectors.
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* dwarf2out.c (loc_descriptor): Punt for MODE_VECTOR_BOOL.
(add_const_value_attribute): Likewise.
gcc/testsuite/
* gcc.target/aarch64/sve/acle/general/debug_4.c: New test.
From-SVN: r279165
|
|
The direct_slp_reduc code in vect_create_epilog_for_reduction was
still assuming that all types involved in a reduction are the same
(up to types_compatible_p), whereas we now support differences in
sign. This was causing an ICE in gcc.dg/vect/pr92324-4.c for SVE.
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-loop.c (vect_create_epilog_for_reduction): When
handling direct_slp_reduc, allow the PHI arguments to have
a different type from the vector elements.
From-SVN: r279164
|
|
The analysis phase of vectorizable_condition wasn't recording the
loop masks needed by the transform phase. This meant that the masks
wouldn't be created in the (rare) case that no other statement needed
them.
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-stmts.c (vectorizable_condition): Record the loop
masks required for extract-last reductions.
gcc/testsuite/
* gcc.target/aarch64/sve/clastb_9.c: New test.
From-SVN: r279163
|
|
Unlike most vector ops, extract-last reductions replace the original
scalar code in-situ rather than adding an adjacent vector implementation.
I.e.:
dest_1 = COND_EXPR <...>;
becomes:
dest_1 = .EXTRACT_LAST (...);
gcc.dg/vect/vect-cond-reduc-4.c was ICEing for SVE because we tried
to replace the pattern statement in this way, rather than replacing
the original scalar statement.
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-stmts.c (vect_finish_replace_stmt): Always use the
original scalar statement rather than a pattern statement.
(vectorizable_condition): Likewise, in the handling of extract-last
reductions.
From-SVN: r279162
|
|
gcc.dg/vect/vect-cond-reduc-5.c was ICEing for SVE because we
tried to use an extract-last reduction for a chain of COND_EXPRs.
Adding support for the chained case would be too invasive for stage 3
so this patch explicitly forbids it instead. I've filed PR92884 for
the possible future work.
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-loop.c (vectorizable_reduction): Don't use
EXTRACT_LAST_REDUCTION for chained reductions.
From-SVN: r279161
|