Paolo Carlini [Thu, 8 Feb 2018 18:54:39 +0000 (18:54 +0000)]
re PR c++/83806 (Spurious -Wunused-but-set-parameter with nullptr)
/cp
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83806
* typeck.c (decay_conversion): Use mark_rvalue_use for the special
case of nullptr too.
/testsuite
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83806
* g++.dg/warn/Wunused-parm-11.C: New.
From-SVN: r257502
Mike Stump [Thu, 8 Feb 2018 18:39:43 +0000 (18:39 +0000)]
Mark previous change with:
PR target/84113
From-SVN: r257500
Marek Polacek [Thu, 8 Feb 2018 16:18:04 +0000 (16:18 +0000)]
re PR tree-optimization/84238 (ICE tree check: expected integer_cst, have plus_expr in to_wide, at tree.h:5527)
PR tree-optimization/84238
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
get_range_strlen.
* gcc.dg/Wstringop-overflow-3.c: New test.
From-SVN: r257497
Nathan Sidwell [Thu, 8 Feb 2018 16:11:39 +0000 (16:11 +0000)]
[C++ PATCH] initializer_list diagnostic
https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00434.html
* class.c (finish_struct): Fix std:initializer_list diagnostic
formatting.
* g++.dg/cpp0x/initlist93.C: Adjust diagnostic.
From-SVN: r257496
Ian Lance Taylor [Thu, 8 Feb 2018 15:37:43 +0000 (15:37 +0000)]
runtime: get missing function name from symbol table
If we trace back through code that has no debug info, as when calling
through C code compiled with -g0, we won't have a function name.
Try to fetch the function name using the symbol table.
Adding the test case revealed that gotest failed to use the gccgo tag
when matching files, so add that.
Reviewed-on: https://go-review.googlesource.com/92756
From-SVN: r257495
Ian Lance Taylor [Thu, 8 Feb 2018 15:34:42 +0000 (15:34 +0000)]
Makefile.am (check-gccgo, check-gcc): Add options to pick up target libstdc++, to permit tests that use C++.
* Makefile.am (check-gccgo, check-gcc): Add options to pick up
target libstdc++, to permit tests that use C++.
* Makefile.in: Rebuild.
From-SVN: r257494
Ian Lance Taylor [Thu, 8 Feb 2018 15:30:22 +0000 (15:30 +0000)]
libgo: update to Go1.10rc2
Reviewed-on: https://go-review.googlesource.com/92736
From-SVN: r257493
Richard Sandiford [Thu, 8 Feb 2018 15:17:20 +0000 (15:17 +0000)]
Another fix for single-element permutes (PR 84265)
PR83753 was about a case in which we ended up trying to "vectorise"
a group of loads ore stores using single-element vectors. The problem
was that we were classifying the load or store as VMAT_CONTIGUOUS_PERMUTE
rather than VMAT_CONTIGUOUS, even though it doesn't make sense to permute
a single-element vector.
In that PR it was enough to change get_group_load_store_type,
because vectorisation ended up being unprofitable and so we didn't
take things further. But when vectorisation is profitable, the same
fix is needed in vectorizable_load and vectorizable_store.
2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
PR tree-optimization/84265
* tree-vect-stmts.c (vectorizable_store): Don't treat
VMAT_CONTIGUOUS accesses as grouped.
(vectorizable_load): Likewise.
gcc/testsuite/
PR tree-optimization/84265
* gcc.dg/vect/pr84265.c: New test.
From-SVN: r257492
Richard Sandiford [Thu, 8 Feb 2018 15:16:29 +0000 (15:16 +0000)]
Use nonzero bits to refine range in split_constant_offset (PR 81635)
This patch is part 2 of the fix for PR 81635. It means that
split_constant_offset can handle loops like:
for (unsigned int i = 0; i < n; i += 4)
{
a[i] = ...;
a[i + 1] = ...;
}
CCP records that "i" must have its low 2 bits clear, but we don't
include this information in the range of "i", which remains [0, +INF].
I tried making set_nonzero_bits update the range info in the same
way that set_range_info updates the nonzero bits, but it regressed
cases like vrp117.c and made some other tests worse.
vrp117.c has a multiplication by 10, so CCP can infer that the low bit
of the result is clear. If we included that in the range, the range
would go from [-INF, +INF] to [-INF, not-quite-+INF]. However,
the multiplication is also known to overflow in all cases, so VRP
saturates the result to [INT_MAX, INT_MAX]. This obviously creates a
contradiction with the nonzero bits, and intersecting the new saturated
range with an existing not-quite-+INF range would make us drop to
VR_UNDEFINED. We're prepared to fold a comparison with an [INT_MAX,
INT_MAX] value but not with a VR_UNDEFINED value.
The other problems were created when intersecting [-INF, not-quite-+INF]
with a useful VR_ANTI_RANGE like ~[-1, 1]. The intersection would
keep the former range rather than the latter.
The patch therefore keeps the adjustment local to split_constant_offset
for now, but adds a helper routine so that it's easy to move this later.
2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
PR tree-optimization/81635
* wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
* wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
(test_round_for_mask): New functions.
(wide_int_cc_tests): Call test_round_for_mask.
* tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
* tree-vrp.c (intersect_range_with_nonzero_bits): New function.
* tree-data-ref.c (split_constant_offset_1): Use it to refine the
range returned by get_range_info.
gcc/testsuite/
PR tree-optimization/81635
* gcc.dg/vect/bb-slp-pr81635-3.c: New test.
* gcc.dg/vect/bb-slp-pr81635-4.c: Likewise.
From-SVN: r257491
Jan Hubicka [Thu, 8 Feb 2018 14:51:51 +0000 (15:51 +0100)]
re PR ipa/81360 (ice in estimate_edge_growth, at ipa-inline.h:86)
PR ipa/81360
* cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
* symtab.c: Include builtins.h
(symtab_node::output_to_lto_symbol_table_p): Move here
from lto-streamer-out.c:output_symbol_p.
* lto-streamer-out.c (write_symbol): Turn early exit to assert.
(output_symbol_p): Move all logic to symtab.c
(produce_symtab): Update.
* lto.c (unify_scc): Register prevailing trees, not trees to be freed.
(read_cgraph_and_symbols): Use
symtab_node::output_to_lto_symbol_table_p.
From-SVN: r257490
Andreas Krebbel [Thu, 8 Feb 2018 14:45:53 +0000 (14:45 +0000)]
S/390: Disable prediction of indirect branches
This patch implements GCC support for mitigating vulnerability
CVE-2017-5715 known as Spectre #2 on IBM Z.
In order to disable prediction of indirect branches the implementation
makes use of an IBM Z specific feature - the execute instruction.
Performing an indirect branch via execute prevents the branch from
being subject to dynamic branch prediction.
The implementation tries to stay close to the x86 solution regarding
user interface.
x86 style options supported (without thunk-inline):
-mindirect-branch=(keep|thunk|thunk-extern)
-mfunction-return=(keep|thunk|thunk-extern)
IBM Z specific options:
-mindirect-branch-jump=(keep|thunk|thunk-extern|thunk-inline)
-mindirect-branch-call=(keep|thunk|thunk-extern)
-mfunction-return-reg=(keep|thunk|thunk-extern)
-mfunction-return-mem=(keep|thunk|thunk-extern)
These options allow us to enable/disable the branch conversion at a
finer granularity.
-mindirect-branch sets the value of -mindirect-branch-jump and
-mindirect-branch-call.
-mfunction-return sets the value of -mfunction-return-reg and
-mfunction-return-mem.
All these options are supported on GCC command line as well as
function attributes.
'thunk' triggers the generation of out of line thunks (expolines) and
replaces the formerly indirect branch with a direct branch to the
thunk. Depending on the -march= setting two different types of thunks
are generated. With -march=z10 or higher exrl (execute relative long)
is being used while targeting older machines makes use of larl/ex
instead. From a security perspective the exrl variant is preferable.
'thunk-extern' does the branch replacement like 'thunk' but does not
emit the thunks.
'thunk-inline' is only available for indirect jumps. It should be used
in environments where correct CFI is important - known as user space.
Additionally the patch introduces the -mindirect-branch-table option
which generates tables pointing to the locations which have been
modified. This is supposed to allow reverting the changes without
re-compilation in situations where it isn't required. The sections are
split up into one section per option.
gcc/ChangeLog:
2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/s390/s390-opts.h (enum indirect_branch): Define.
* config/s390/s390-protos.h (s390_return_addr_from_memory)
(s390_indirect_branch_via_thunk)
(s390_indirect_branch_via_inline_thunk): Add function prototypes.
(enum s390_indirect_branch_type): Define.
* config/s390/s390.c (struct s390_frame_layout, struct
machine_function): Remove.
(indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
(indirect_branch_table_label_no, indirect_branch_table_name):
Define variables.
(INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
(enum s390_indirect_branch_option): Define.
(s390_return_addr_from_memory): New function.
(s390_handle_string_attribute): New function.
(s390_attribute_table): Add new attribute handler.
(s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
(s390_indirect_branch_via_thunk): New function.
(s390_indirect_branch_via_inline_thunk): New function.
(s390_function_ok_for_sibcall): When jumping via thunk disallow
sibling call optimization for non z10 compiles.
(s390_emit_call): Force indirect branch target to be a single
register. Add r1 clobber for non-z10 compiles.
(s390_emit_epilogue): Emit return jump via return_use expander.
(s390_reorg): Handle JUMP_INSNs as execute targets.
(s390_option_override_internal): Perform validity checks for the
new command line options.
(s390_indirect_branch_attrvalue): New function.
(s390_indirect_branch_settings): New function.
(s390_set_current_function): Invoke s390_indirect_branch_settings.
(s390_output_indirect_thunk_function): New function.
(s390_code_end): Implement target hook.
(s390_case_values_threshold): Implement target hook.
(TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
macros.
* config/s390/s390.h (struct s390_frame_layout)
(struct machine_function): Move here from s390.c.
(TARGET_INDIRECT_BRANCH_NOBP_RET)
(TARGET_INDIRECT_BRANCH_NOBP_JUMP)
(TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
(TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
(TARGET_INDIRECT_BRANCH_NOBP_CALL)
(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
(TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
(TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
(TARGET_INDIRECT_BRANCH_TABLE): Define macros.
* config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
(INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
(mnemonic attribute): Add values which aren't recognized
automatically.
("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
pattern for branch conversion. Fix mnemonic attribute.
("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
indirect branch via thunk if requested.
("indirect_jump", "<code>"): Expand patterns for branch conversion.
("*indirect_jump"): Disable for branch conversion using out of
line thunks.
("indirect_jump_via_thunk<mode>_z10")
("indirect_jump_via_thunk<mode>")
("indirect_jump_via_inlinethunk<mode>_z10")
("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
("casesi_jump_via_inlinethunk<mode>_z10")
("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
("*indirect2_jump"): Disable for branch conversion.
("casesi_jump"): Turn into expander and expand patterns for branch
conversion.
("return_use"): New expander.
("*return"): Emit return via thunk and rename it to ...
("*return<mode>"): ... this one.
* config/s390/s390.opt: Add new options and and enum for the
option values.
gcc/testsuite/ChangeLog:
2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* gcc.target/s390/nobp-function-pointer-attr.c: New test.
* gcc.target/s390/nobp-function-pointer-nothunk.c: New test.
* gcc.target/s390/nobp-function-pointer-z10.c: New test.
* gcc.target/s390/nobp-function-pointer-z900.c: New test.
* gcc.target/s390/nobp-indirect-jump-attr.c: New test.
* gcc.target/s390/nobp-indirect-jump-inline-attr.c: New test.
* gcc.target/s390/nobp-indirect-jump-inline-z10.c: New test.
* gcc.target/s390/nobp-indirect-jump-inline-z900.c: New test.
* gcc.target/s390/nobp-indirect-jump-nothunk.c: New test.
* gcc.target/s390/nobp-indirect-jump-z10.c: New test.
* gcc.target/s390/nobp-indirect-jump-z900.c: New test.
* gcc.target/s390/nobp-return-attr-all.c: New test.
* gcc.target/s390/nobp-return-attr-neg.c: New test.
* gcc.target/s390/nobp-return-mem-attr.c: New test.
* gcc.target/s390/nobp-return-mem-nothunk.c: New test.
* gcc.target/s390/nobp-return-mem-z10.c: New test.
* gcc.target/s390/nobp-return-mem-z900.c: New test.
* gcc.target/s390/nobp-return-reg-attr.c: New test.
* gcc.target/s390/nobp-return-reg-mixed.c: New test.
* gcc.target/s390/nobp-return-reg-nothunk.c: New test.
* gcc.target/s390/nobp-return-reg-z10.c: New test.
* gcc.target/s390/nobp-return-reg-z900.c: New test.
* gcc.target/s390/nobp-table-jump-inline-z10.c: New test.
* gcc.target/s390/nobp-table-jump-inline-z900.c: New test.
* gcc.target/s390/nobp-table-jump-z10.c: New test.
* gcc.target/s390/nobp-table-jump-z900.c: New test.
From-SVN: r257489
Richard Sandiford [Thu, 8 Feb 2018 13:50:16 +0000 (13:50 +0000)]
Simplify LRA lowpart subreg fix
r257177 made the else arms equivalent to the if arms.
2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* lra-constraints.c (match_reload): Unconditionally use
gen_lowpart_SUBREG, rather than selecting between that
and equivalent gen_rtx_SUBREG code.
From-SVN: r257488
Richard Biener [Thu, 8 Feb 2018 13:29:15 +0000 (13:29 +0000)]
re PR middle-end/84233 (ICE (segfault) in gimple_assign_rhs_code)
2018-02-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/84233
* tree-ssa-phiprop.c (propagate_with_phi): Use separate
changed flag instead of boguously re-using phi_inserted.
* g++.dg/torture/pr84233.C: New testcase.
From-SVN: r257486
Martin Jambor [Thu, 8 Feb 2018 13:06:26 +0000 (14:06 +0100)]
[hsa] Fix PR82416 testcase
2018-02-08 Martin Jambor <mjambor@suse.cz>
* testsuite/libgomp.hsa.c/pr82416.c: Make the function with target
clonable.
From-SVN: r257485
Martin Jambor [Thu, 8 Feb 2018 13:03:52 +0000 (14:03 +0100)]
[hsa] Set program allocation for static local variables
2018-02-08 Martin Jambor <mjambor@suse.cz>
* hsa-gen.c (get_symbol_for_decl): Set program allocation for
static local variables.
libgomp/
* testsuite/libgomp.hsa.c/staticvar.c: New test.
From-SVN: r257484
Richard Biener [Thu, 8 Feb 2018 12:53:19 +0000 (12:53 +0000)]
re PR target/84278 (claims initv4sfv2sf is available but inits through stack)
2018-02-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/84278
* tree-vect-stmts.c (vectorizable_store): When looking for
smaller vector types to perform grouped strided loads/stores
make sure the mode is supported by the target.
(vectorizable_load): Likewise.
* gcc.target/i386/pr84278.c: New testcase.
From-SVN: r257483
Wilco Dijkstra [Thu, 8 Feb 2018 12:32:51 +0000 (12:32 +0000)]
[AArch64] Use more LDP/STP in shrinkwrapping
The shrinkwrap optimization added in GCC 7 allows each callee-save to
be delayed and done only across blocks which need a particular callee-save.
Although this reduces unnecessary memory traffic on code paths that need
few callee-saves, it typically uses LDR/STR rather than LDP/STP. This
means more memory accesses and increased codesize, ~1.0% on average.
To improve this, if a particular callee-save must be saved/restored, also
add the adjacent callee-save to allow use of LDP/STP. This significantly
reduces codesize (for example gcc_r, povray_r, parest_r, xalancbmk_r are
1% smaller). This is a simple fix which can be backported. A more advanced
approach would scan blocks for pairs of callee-saves, but that requires a
full rewrite of all the callee-save code which is too late at this stage.
An example epilog in a shrinkwrapped function before:
ldp x21, x22, [sp,#16]
ldr x23, [sp,#32]
ldr x24, [sp,#40]
ldp x25, x26, [sp,#48]
ldr x27, [sp,#64]
ldr x28, [sp,#72]
ldr x30, [sp,#80]
ldr d8, [sp,#88]
ldp x19, x20, [sp],#96
ret
And after this patch:
ldr d8, [sp,#88]
ldp x21, x22, [sp,#16]
ldp x23, x24, [sp,#32]
ldp x25, x26, [sp,#48]
ldp x27, x28, [sp,#64]
ldr x30, [sp,#80]
ldp x19, x20, [sp],#96
ret
gcc/
* config/aarch64/aarch64.c (aarch64_components_for_bb):
Increase LDP/STP opportunities by adding adjacent callee-saves.
From-SVN: r257482
Wilco Dijkstra [Thu, 8 Feb 2018 12:29:28 +0000 (12:29 +0000)]
PR84068, PR83459: Fix sort order of SCHED_PRESSURE_MODEL
The comparison function for SCHED_PRESSURE_MODEL is incorrect. If either
instruction is not in target_bb, the ordering is not well defined.
Since all instructions outside the target_bb get the highest model_index,
all we need to do is sort on model_index. If the model_index is the same
we defer to RFS_DEP_COUNT and/or RFS_TIE.
gcc/
PR rtl-optimization/84068
PR rtl-optimization/83459
* haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
gcc/testsuite
PR rtl-optimization/84068
PR rtl-optimization/83459
* gcc.dg/pr84068.c: New test.
From-SVN: r257481
Aldy Hernandez [Thu, 8 Feb 2018 11:16:25 +0000 (11:16 +0000)]
re PR tree-optimization/84224 (ICE in execute, at gimple-ssa-warn-alloca.c:448)
PR tree-optimization/84224
* gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
* calls.c (gimple_alloca_call_p): Only return TRUE when we have
non-zero arguments.
From-SVN: r257480
Richard Biener [Thu, 8 Feb 2018 10:52:00 +0000 (10:52 +0000)]
slp-pr56812.cc: Allow either basic-block or loop vectorization to happen.
2018-02-08 Richard Biener <rguenther@suse.de>
* g++.dg/vect/slp-pr56812.cc: Allow either basic-block or
loop vectorization to happen.
From-SVN: r257479
Paolo Carlini [Thu, 8 Feb 2018 09:06:33 +0000 (09:06 +0000)]
re PR c++/83204 (c++ -std=c++14 ICE in maybe_undo_parenthesized_ref, at cp/semantics.c:1694)
/cp
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83204
* pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
/testsuite
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83204
* g++.dg/cpp0x/lambda/lambda-ice25.C: New.
From-SVN: r257478
GCC Administrator [Thu, 8 Feb 2018 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257477
Michael Meissner [Wed, 7 Feb 2018 23:58:28 +0000 (23:58 +0000)]
install.texi (Configuration): Document the --with-long-double-format={ibm,ieee} PowerPC configuration options.
2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
* doc/install.texi (Configuration): Document the
--with-long-double-format={ibm,ieee} PowerPC configuration
options.
From-SVN: r257473
Iain Sandoe [Wed, 7 Feb 2018 23:42:51 +0000 (23:42 +0000)]
altivec.md (*restore_world): Remove LR use.
2018-02-07 Iain Sandoe <iain@codesourcery.com>
* config/rs6000/altivec.md (*restore_world): Remove LR use.
* config/rs6000/predicates.md (restore_world_operation): Adjust op
count, remove one USE.
From-SVN: r257472
Will Schmidt [Wed, 7 Feb 2018 23:02:00 +0000 (23:02 +0000)]
vsxcopy.c: Update scan-assembler stanzas.
[testsuite]
2018-02-07 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/vsxcopy.c: Update scan-assembler stanzas.
From-SVN: r257471
Michael Meissner [Wed, 7 Feb 2018 22:54:59 +0000 (22:54 +0000)]
re PR target/84154 (PowerPC GCC 7 and 8 have regression in converting fp to short/char and returning it)
[gcc]
2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/84154
* config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
Convert from define_expand to be define_insn_and_split. Rework
float/double/_Float128 conversions to QI/HI/SImode to work with
both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
conversions to QI/HImode types did a store and then a load to
truncate the value. For conversions to VSX registers, don't split
the insn, instead emit the code directly. Use the code iterator
any_fix to combine signed and unsigned conversions.
(fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
(fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
(fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
(fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
(fix_<mode>di2_hw): Likewise.
(fixuns_<mode>di2_hw): Likewise.
(fix_<mode>si2_hw): Likewise.
(fixuns_<mode>si2_hw): Likewise.
(fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
(fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
(fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
fix<uns>_trunc<SFDF:mode>si2_p8.
(fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
used.
(fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
(fix<uns>_<mode>_mem): Likewise.
(fctiw<u>z_<mode>_mem): Likewise.
(fix<uns>_<mode>_mem): Likewise.
(fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
the register allocator from doing a direct move to the GPRs to do
a store, and instead use the ISA 3.0 store byte/half-word from
vector register instruction. For IEEE 128-bit floating point,
also optimize stores of 32-bit ints.
(fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
[gcc/testsuite]
2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/84154
* gcc.target/powerpc/pr84154-1.c: New tests.
* gcc.target/powerpc/pr84154-2.c: Likewise.
* gcc.target/powerpc/pr84154-3.c: Likewise.
From-SVN: r257470
Will Schmidt [Wed, 7 Feb 2018 22:46:16 +0000 (22:46 +0000)]
builtins-mergew-mergeow.c: Update dg-requires.
[testsuite]
2018-02-07 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/builtins-mergew-mergeow.c: Update dg-requires.
From-SVN: r257469
Jakub Jelinek [Wed, 7 Feb 2018 22:30:51 +0000 (23:30 +0100)]
re PR c++/84082 (ICE with broken template function definition)
PR c++/84082
* parser.c (cp_parser_dot_deref_incomplete): New function.
(cp_parser_postfix_dot_deref_expression): Use it.
* g++.dg/template/incomplete11.C: New test.
* g++.dg/parse/crash67.C: Expect an incomplete type diagnostics too.
From-SVN: r257466
Steven G. Kargl [Wed, 7 Feb 2018 22:29:22 +0000 (22:29 +0000)]
re PR fortran/82994 (ICE in gfc_match_deallocate, at fortran/match.c:4478)
2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82994
* match.c (gfc_match_deallocate): Check for NULL pointer.
2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82994
* gfortran.dg/deallocate_error_3.f90: New test.
* gfortran.dg/deallocate_error_4.f90: New test.
From-SVN: r257465
Joseph Myers [Wed, 7 Feb 2018 22:20:39 +0000 (22:20 +0000)]
* es.po: Update.
From-SVN: r257464
Ian Lance Taylor [Wed, 7 Feb 2018 22:04:55 +0000 (22:04 +0000)]
runtime: don't call funcPC from a function
The escape analysis support is not yet good enough to avoid escaping
the argument to funcPC. This causes unnecessary and often harmful
memory allocation. E.g., (*cpuProfile).addExtra can be called from a
signal handler, and it must not allocate memory.
Move the calls to funcPC to use variables instead. This was done in
the original migration to using funcPC, but was not done for newer code.
In one case, in signal handling code, use getSigtramp.
Reviewed-on: https://go-review.googlesource.com/92735
From-SVN: r257463
Thomas Koenig [Wed, 7 Feb 2018 21:08:51 +0000 (21:08 +0000)]
re PR fortran/68560 (The test gfortran.dg/shape_8.f90 now fails when compiled with -flto)
2018-02-07 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/68560
* trans-intrinsic.c (gfc_conv_intrinsic_shape): New function.
(gfc_conv_intrinsic_function): Call it.
2018-02-07 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/68560
* gfortran.dg/shape_9.f90: New test.
From-SVN: r257462
Steven G. Kargl [Wed, 7 Feb 2018 20:43:33 +0000 (20:43 +0000)]
re PR fortran/82049 (ICE with character(*),parameter array constructor)
2018-02-06 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049
* match.c (gfc_match_type_spec): If the charlen is non-NULL, then
try to resolve it. While here return early if possible.
2018-02-06 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049
* gfortran.dg/assumed_charlen_parameter.f90: New test.
From-SVN: r257459
Rainer Orth [Wed, 7 Feb 2018 19:32:21 +0000 (19:32 +0000)]
Fix libgomp.oacc-c-c++-common/pr84217.c for C++
* testsuite/libgomp.oacc-c-c++-common/pr84217.c (abort)
[__cplusplus]: Declare extern "C".
From-SVN: r257457
David Malcolm [Wed, 7 Feb 2018 17:55:54 +0000 (17:55 +0000)]
C++: avoid most reserved words as misspelling suggestions (PR c++/81610 and PR c++/80567)
lookup_name_fuzzy can offer some reserved words as suggestions for
misspelled words, helping with "singed"/"signed" typos.
PR c++/81610 and PR c++/80567 report problems where the C++ frontend
suggested "if", "for" and "else" as corrections for misspelled variable
names.
The root cause is that in r247233
("Fix spelling suggestions for reserved words (PR c++/80177)")
I loosened the conditions on these reserved words, adding this condition:
if (kind == FUZZY_LOOKUP_TYPENAME)
to the logic for rejecting words that don't start decl-specifiers, to
allow for "static_assert" to be offered.
This is too loose a condition: we don't want to suggest *any* reserved word
when we're in a context where we don't know we expect a typename.
For the kinds of error-recover situations where we're suggesting
spelling corrections we don't have much contextual information, so it
seems prudent to be stricter about which reserved words we offer
as spelling suggestions; I don't think it makes sense for us to
suggest e.g. "for".
This patch implements that by effectively reinstating the old logic,
but special-casing RID_STATIC_ASSERT, moving the logic to a new
subroutine (in case we want to allow for other special-cases).
I attempted to add suggestions for the various RID_*CAST, to cope
with e.g. "reinterptet_cast" (I can never type that correctly on the
first try), but the following '<' token confuses the error-recovery
enough that the suggestion code isn't triggered.
gcc/cp/ChangeLog:
PR c++/81610
PR c++/80567
* name-lookup.c (suggest_rid_p): New function.
(lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
suggest_rid_p.
gcc/testsuite/ChangeLog:
PR c++/81610
PR c++/80567
* g++.dg/spellcheck-reswords.C: New test case.
* g++.dg/spellcheck-stdlib.C: Remove xfail from dg-bogus
suggestion of "if".
From-SVN: r257456
Alan Hayward [Wed, 7 Feb 2018 16:25:28 +0000 (16:25 +0000)]
Support >26 operands in generation code.
2018-02-07 Alan Hayward <alan.hayward@arm.com>
* genextract.c (push_pathstr_operand): New function to support [a-zA-Z].
(walk_rtx): Call push_pathstr_operand.
(print_path): Support [a-zA-Z].
From-SVN: r257455
Jason Merrill [Wed, 7 Feb 2018 16:02:50 +0000 (11:02 -0500)]
PR c++/84182 - ICE with captured lambda
PR c++/84181
* pt.c (extract_locals_r, extract_local_specs): New.
(tsubst_pack_expansion): Use them.
From-SVN: r257454
Richard Biener [Wed, 7 Feb 2018 15:46:17 +0000 (15:46 +0000)]
re PR tree-optimization/84037 (Speed regression of polyhedron benchmark since r256644)
2018-02-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/84037
* tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
(cse_and_gimplify_to_preheader): Declare.
(vect_get_place_in_interleaving_chain): Likewise.
* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
ivexpr_map.
(_loop_vec_info::~_loop_vec_info): Delete it.
(cse_and_gimplify_to_preheader): New function.
* tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
* tree-vect-stmts.c (vectorizable_store): CSE base and steps.
(vectorizable_load): Likewise. For grouped stores always base
the IV on the first element.
* tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
condition before gimplifying.
From-SVN: r257453
Martin Liska [Wed, 7 Feb 2018 13:16:04 +0000 (14:16 +0100)]
Revert behavior to r251316.
2018-02-07 Martin Liska <mliska@suse.cz>
PR c++/84059.
* class.c (add_method): Append argument value.
* cp-tree.h (maybe_version_functions): Add new argument.
* decl.c (decls_match): Call it if a declaration does not
have DECL_FUNCTION_VERSIONED.
(maybe_version_functions): record argument is added.
2018-02-07 Martin Liska <mliska@suse.cz>
PR c++/84059.
* g++.dg/ext/mv26.C: New test.
From-SVN: r257451
Jakub Jelinek [Wed, 7 Feb 2018 12:53:31 +0000 (13:53 +0100)]
tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for *DIV_EXPR and *MOD_EXPR.
* tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
*DIV_EXPR and *MOD_EXPR.
From-SVN: r257450
Tom de Vries [Wed, 7 Feb 2018 11:35:30 +0000 (11:35 +0000)]
[testsuite] Require alloca in gcc.dg/pr83844.c
2018-02-07 Tom de Vries <tom@codesourcery.com>
* gcc.dg/pr83844.c: Require effective target alloca.
From-SVN: r257447
Tom de Vries [Wed, 7 Feb 2018 11:35:18 +0000 (11:35 +0000)]
[testsuite] Require global_constructor in gcc.dg/torture/pr83055.c
2018-02-07 Tom de Vries <tom@codesourcery.com>
* gcc.dg/torture/pr83055.c: Require effective target global_constructor.
From-SVN: r257446
H.J. Lu [Wed, 7 Feb 2018 10:49:53 +0000 (10:49 +0000)]
Use -fcf-protection=return in cet-intrin-4.c
Since -fcf-protection requires both -mshstk and -mibt, use
-fcf-protection=return with -mshstk in cet-intrin-4.c.
PR target/84243
* gcc.target/i386/cet-intrin-4.c (dg-options): Use
-fcf-protection=return.
From-SVN: r257445
H.J. Lu [Wed, 7 Feb 2018 10:48:39 +0000 (10:48 +0000)]
i386: Mask out the CF_SET bit for -fcf-protection check
Since ix86_option_override_internal sets the CF_SET bit in
flag_cf_protection and it can be called more than once via pragma,
we need to mask out the CF_SET bit when checking flag_cf_protection.
PR target/84248
* config/i386/i386.c (ix86_option_override_internal): Mask out
the CF_SET bit when checking -fcf-protection.
From-SVN: r257444
Tom de Vries [Wed, 7 Feb 2018 10:37:55 +0000 (10:37 +0000)]
[openacc] Fix diff_type in expand_oacc_collapse_init
2018-02-07 Tom de Vries <tom@codesourcery.com>
PR libgomp/84217
* omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
enough.
* c-c++-common/goacc/pr84217.c: New test.
* gfortran.dg/goacc/pr84217.f90: New test.
* testsuite/libgomp.oacc-c-c++-common/pr84217.c: New test.
From-SVN: r257443
Jan Hubicka [Wed, 7 Feb 2018 10:20:03 +0000 (11:20 +0100)]
* lto.c (register_resolution): Remove forgotten sanity check.
From-SVN: r257442
Richard Biener [Wed, 7 Feb 2018 10:14:25 +0000 (10:14 +0000)]
re PR tree-optimization/84204 ([graphite] ICE in set_codegen_error, at graphite-isl-ast-to-gimple.c:206)
2018-02-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/84204
* tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
this place.
* gcc.dg/graphite/pr84204.c: New testcase.
PR tree-optimization/84205
* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
special-case isl_ast_op_zdiv_r.
* gcc.dg/graphite/pr84205.c: New testcase.
PR tree-optimization/84223
* graphite-scop-detection.c (gather_bbs::before_dom_children):
Only add conditions from within the region.
(gather_bbs::after_dom_children): Adjust.
* gfortran.dg/graphite/pr84223.f90: New testcase.
From-SVN: r257441
Georg-Johann Lay [Wed, 7 Feb 2018 09:59:52 +0000 (09:59 +0000)]
re PR target/84209 ([avr] Don't split SP in split2)
PR target/84209
* config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
* config/avr/avr.md: Only post-reload split REG-REG moves if
either register is REGERAL_REG_P.
From-SVN: r257440
Paolo Carlini [Wed, 7 Feb 2018 09:35:10 +0000 (09:35 +0000)]
re PR c++/71662 ([DR 1485] ICE on invalid C++11 code with unqualified name look up: in tsubst_copy, at cp/pt.c:14010)
2018-02-07 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71662
* g++.dg/cpp0x/scoped_enum7.C: New.
From-SVN: r257439
Christophe Lyon [Wed, 7 Feb 2018 09:12:48 +0000 (09:12 +0000)]
[testsuite] Fix gcc.dg/cse_recip.c for AArch64 after r257181.
2018-02-07 Christophe Lyon <christophe.lyon@linaro.org>
PR tree-optimization/83008
* gcc.dg/cse_recip.c: Add -fno-tree-slp-vectorize.
From-SVN: r257438
Jakub Jelinek [Wed, 7 Feb 2018 08:29:58 +0000 (09:29 +0100)]
re PR tree-optimization/84235 (Miscompilation of floating point code by dom2)
PR tree-optimization/84235
* tree-ssa-scopedtables.c
(avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
if the subtraction is performed in floating point type where NaNs are
honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
build 1. Formatting fix.
* gcc.c-torture/execute/ieee/pr84235.c: New test.
From-SVN: r257437
Ian Lance Taylor [Wed, 7 Feb 2018 01:52:48 +0000 (01:52 +0000)]
compiler: make single Btype for methods table of identical interface type
Normally we ensure to build a single Btype for identical types.
We did not do this for methods table of identical interface
types, however. If there are two identical interface type I, I2,
they have the same Btype BI, but different Btypes for their
methods tables, BM and BM2. From the backend's point of view
only one of them is linked to BI. This can cause inconsitency
in the backend's type system, like unresolved placeholder. This
CL ensures we create a single Btype for methods table of
identical interface type.
Reviewed-on: https://go-review.googlesource.com/92436
From-SVN: r257436
GCC Administrator [Wed, 7 Feb 2018 00:16:28 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257435
Rainer Orth [Tue, 6 Feb 2018 23:31:09 +0000 (23:31 +0000)]
Don't pass x86-only options on non-x86 targets in c-c++-common/fcf-protection-[67].c (PR testsuite/84243)
PR testsuite/84243
* c-c++-common/fcf-protection-6.c: Only pass -mshstk on x86
targets.
* c-c++-common/fcf-protection-7.c: Likewise for -mibt.
From-SVN: r257432
Jakub Jelinek [Tue, 6 Feb 2018 20:32:45 +0000 (21:32 +0100)]
re PR target/84146 (ICE with -mcet in dwarf2out_var_location, involving sigsetjmp)
PR target/84146
* config/i386/i386.c (rest_of_insert_endbranch): Only skip
NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
and skip it regardless of bb boundaries. Use CALL_P macro,
don't test INSN_P (insn) together with CALL_P or JUMP_P check
unnecessarily, formatting fix.
* gcc.target/i386/pr84146.c: New test.
From-SVN: r257431
Michael Collison [Tue, 6 Feb 2018 20:27:08 +0000 (20:27 +0000)]
2018-02-06 Michael Collison <michael.collison@arm.com>
* config/arm/thumb2.md:
(*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
(*thumb_mov_notscc): Ditto.
* gcc.target/arm/pr7676.c: New testcase.
From-SVN: r257430
Michael Meissner [Tue, 6 Feb 2018 20:15:40 +0000 (20:15 +0000)]
re PR target/84154 (PowerPC GCC 7 and 8 have regression in converting fp to short/char and returning it)
2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/84154
* config/rs6000/rs6000.md (su code attribute): Use "u" for
unsigned_fix, not "s".
From-SVN: r257429
Rainer Orth [Tue, 6 Feb 2018 18:33:19 +0000 (18:33 +0000)]
Fix HAVE_GAS_CFI_DIRECTIVE for x86_64-pc-solaris2.*
* configure.ac (gcc_fn_eh_frame_ro): New function.
(gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
correct .eh_frame permissions.
* configure: Regenerate.
From-SVN: r257424
Andrew Jenner [Tue, 6 Feb 2018 17:37:46 +0000 (17:37 +0000)]
invoke.texi: Add section for the PowerPC SPE backend.
* doc/invoke.texi: Add section for the PowerPC SPE backend. Remove irrelevant options.
From-SVN: r257422
Aldy Hernandez [Tue, 6 Feb 2018 17:11:01 +0000 (17:11 +0000)]
re PR tree-optimization/84225 (ICE in operation_no_trapping_overflow, at tree.c:7206)
PR tree-optimization/84225
Add test for previous commit for PR84225.
From-SVN: r257420
Bill Schmidt [Tue, 6 Feb 2018 16:55:01 +0000 (16:55 +0000)]
rs6000.c (rs6000_option_override_internal): Display warning message for -mno-speculate-indirect-jumps.
[gcc]
2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_option_override_internal):
Display warning message for -mno-speculate-indirect-jumps.
[gcc/testsuite]
2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/safe-indirect-jump-1.c: Detect deprecation
warning for -mno-speculate-indirect-jumps.
* gcc.target/powerpc/safe-indirect-jump-2.c: Likewise.
* gcc.target/powerpc/safe-indirect-jump-3.c: Likewise.
* gcc.target/powerpc/safe-indirect-jump-4.c: Likewise.
* gcc.target/powerpc/safe-indirect-jump-5.c: Likewise.
* gcc.target/powerpc/safe-indirect-jump-6.c: Likewise.
* gcc.target/powerpc/safe-indirect-jump-7.c: Likewise.
From-SVN: r257419
Andrew Jenner [Tue, 6 Feb 2018 16:10:43 +0000 (16:10 +0000)]
powerpcspe.opt: (msimple-fpu, mfpu) Add Undocumented.
* config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
Undocumented.
* config/powerpcspe/sysv4.opt (mbit-align): Likewise.
From-SVN: r257417
Aldy Hernandez [Tue, 6 Feb 2018 15:44:51 +0000 (15:44 +0000)]
re PR tree-optimization/84225 (ICE in operation_no_trapping_overflow, at tree.c:7206)
PR tree-optimization/84225
* tree-eh.c (find_trapping_overflow): Only call
operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
From-SVN: r257416
Ian Lance Taylor [Tue, 6 Feb 2018 15:30:06 +0000 (15:30 +0000)]
compiler: avoid negative zero in float constants
Check for negative numbers with very small magnitudes that will round
to negative zero, and force them to positive zero instead.
This implements the spec clarification in https://golang.org/cl/14727.
The test is in https://golang.org/cl/91895.
Fixes golang/go#12621
Reviewed-on: https://go-review.googlesource.com/92175
From-SVN: r257415
Igor Tsimbalist [Tue, 6 Feb 2018 15:25:31 +0000 (16:25 +0100)]
Fix checking -mibt and -mshstk options for control flow protection
PR target/84145
* config/i386/i386.c: Reimplement the check of possible options
-mibt/-mshstk conbination. Change error messages.
* doc/invoke.texi: Fix a typo: remove extra '='.
* c-c++-common/fcf-protection-1.c: Change a compared message.
* c-c++-common/fcf-protection-2.c: Likewise.
* c-c++-common/fcf-protection-3.c: Likewise.
* c-c++-common/fcf-protection-5.c: Likewise.
* c-c++-common/fcf-protection-6.c: New test.
* c-c++-common/fcf-protection-7.c: Likewise.
From-SVN: r257414
Ian Lance Taylor [Tue, 6 Feb 2018 15:18:50 +0000 (15:18 +0000)]
runtime: correct runtime structfield type to match reflect
The offset field in structfield has changed to offsetAnon, and now
requires a shift to get the actual offset value.
Fixes golang/go#23391
Reviewed-on: https://go-review.googlesource.com/92275
From-SVN: r257413
Jan Hubicka [Tue, 6 Feb 2018 13:27:04 +0000 (14:27 +0100)]
re PR lto/81004 (linking failed with -flto and static libboost_program_options)
PR lto/81004
* lto.c: Include builtins.h
(register_resolution): Merge resolutions in case trees was
merged across units.
(lto_maybe_register_decl): Break out from ...
(lto_read_decls): ... here.
(unify_scc): Also register decls here.
(read_cgraph_and_symbols): Sanity check that all resolutions was
read.
From-SVN: r257412
Marek Polacek [Tue, 6 Feb 2018 13:25:54 +0000 (13:25 +0000)]
re PR tree-optimization/84228 (Bogus -Wstringop-truncation warning with -g)
PR tree-optimization/84228
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
* c-c++-common/Wstringop-truncation-3.c: New test.
From-SVN: r257411
Tamar Christina [Tue, 6 Feb 2018 11:20:55 +0000 (11:20 +0000)]
re PR target/82641 (Unable to enable crc32 for a certain function with target attribute on ARM (aarch32))
2018-02-06 Tamar Christina <tamar.christina@arm.com>
PR target/82641
* config/arm/arm.c (arm_print_asm_arch_directives): Record already
emitted arch directives.
* config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
__ARM_FEATURE_COPROC before changing architectures.
gcc/testsuite
2018-02-06 Tamar Christina <tamar.christina@arm.com>
PR target/82641
* gcc.target/arm/pragma_arch_switch_2.c: New.
From-SVN: r257410
Rainer Orth [Tue, 6 Feb 2018 10:28:47 +0000 (10:28 +0000)]
Avoid cc1 SEGV in gcc.dg/rtl/x86_64/final.c (PR target/79975)
PR target/79975
* gcc.dg/rtl/x86_64/final.c: Add -fdwarf2-cfi-asm to dg-options.
From-SVN: r257408
Richard Biener [Tue, 6 Feb 2018 09:26:48 +0000 (09:26 +0000)]
i386.c (print_reg): Fix typo.
2018-02-06 Richard Biener <rguenther@suse.de>
* config/i386/i386.c (print_reg): Fix typo.
(ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
From-SVN: r257407
Eric Botcazou [Tue, 6 Feb 2018 08:30:53 +0000 (08:30 +0000)]
gcc-plugin.m4 (GCC_ENABLE_PLUGINS): Remove -q option passed to grep.
config/
* gcc-plugin.m4 (GCC_ENABLE_PLUGINS): Remove -q option passed to grep.
gcc/
* configure: Regenerate.
From-SVN: r257406
Rainer Orth [Tue, 6 Feb 2018 08:16:22 +0000 (08:16 +0000)]
Add upstream svn rev for PR sanitizer/82825.
From-SVN: r257405
GCC Administrator [Tue, 6 Feb 2018 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257404
Joseph Myers [Mon, 5 Feb 2018 23:47:14 +0000 (23:47 +0000)]
* sv.po: Update.
From-SVN: r257401
Martin Sebor [Mon, 5 Feb 2018 22:45:04 +0000 (22:45 +0000)]
PR tree-optimization/83369 - Missing diagnostics during inlining
gcc/ChangeLog:
PR tree-optimization/83369
* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
inlining context.
gcc/testsuite/ChangeLog:
PR tree-optimization/83369
gcc.dg/Wnonnull.c: New test.
From-SVN: r257400
Richard Sandiford [Mon, 5 Feb 2018 21:34:46 +0000 (21:34 +0000)]
Make lto.exp work with Tcl 8.4
"dict" was added in Tcl 8.5, but until a couple of weeks ago the
testsuite had worked with 8.4.
This patch uses arrays instead, like we do for the caching in
target-supports.exp. It is a bit uglier than using dicts was,
but hopefully not too bad...
2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/testsuite/
* lib/lto.exp (lto_handle_diagnostics): Remove messages_by_file
argument and use dg-messages-by-file instead. Expect it to be
an array rather than a dict.
(lto-link-and-maybe-run): Remove messages_by_file argument and
use an upvar for dg-messages-by-file. Update call to
lto_handle_diagnostics.
(lt-get-options): Treat dg-messages-by-file as an array
rather than a dict.
(lto-get-options-main): Likewise. Set the entry rather than appending.
(lto-execute): Treat dg-messages-by-file as an array rather than
a dict. Update call to lto-link-and-maybe-run.
From-SVN: r257397
Ian Lance Taylor [Mon, 5 Feb 2018 19:26:29 +0000 (19:26 +0000)]
compiler: rollback "avoid negative zero in float constants"
It uses functions that are not available in MPFR 2.4.2, which is the
current version supported by GCC.
Original change description:
compiler: avoid negative zero in float constants
Check for negative numbers with very small magnitudes that will round
to negative zero, and force them to positive zero instead.
This implements the spec clarification in https://golang.org/cl/14727.
The test is in https://golang.org/cl/91895.
Fixes golang/go#12621
Updates golang/go#12621
Reviewed-on: https://go-review.googlesource.com/92055
From-SVN: r257393
Ian Lance Taylor [Mon, 5 Feb 2018 15:28:59 +0000 (15:28 +0000)]
compiler: avoid negative zero in float constants
Check for negative numbers with very small magnitudes that will round
to negative zero, and force them to positive zero instead.
This implements the spec clarification in https://golang.org/cl/14727.
The test is in https://golang.org/cl/91895.
Fixes golang/go#12621
Reviewed-on: https://go-review.googlesource.com/91915
From-SVN: r257390
Marek Polacek [Mon, 5 Feb 2018 11:47:48 +0000 (11:47 +0000)]
class.c: Remove unused global variables.
* class.c: Remove unused global variables.
(build_primary_vtable): Don't gather statistics.
(print_class_statistics): Remove.
* cp-tree.h (print_class_statistics): Remove.
* tree.c (cxx_print_statistics): Don't call print_class_statistics.
From-SVN: r257389
Paolo Carlini [Mon, 5 Feb 2018 11:15:55 +0000 (11:15 +0000)]
re PR c++/82782 (ICE: nested template alias and specialized template with auto template parameter)
2018-02-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/82782
* g++.dg/cpp1z/inline-var4.C: New.
From-SVN: r257388
Martin Liska [Mon, 5 Feb 2018 11:01:50 +0000 (12:01 +0100)]
Cherry-pick libsanitizer pointer-pair tristate option.
2018-02-05 Martin Liska <mliska@suse.cz>
* doc/invoke.texi: Cherry-pick upstream r323995.
2018-02-05 Martin Liska <mliska@suse.cz>
* c-c++-common/asan/pointer-compare-1.c: Adjust ASAN_OPTIONS
options.
* c-c++-common/asan/pointer-compare-2.c: Likewise.
* c-c++-common/asan/pointer-subtract-1.c: Likewise.
* c-c++-common/asan/pointer-subtract-2.c: Likewise.
* c-c++-common/asan/pointer-subtract-3.c: Likewise.
* c-c++-common/asan/pointer-subtract-4.c: Likewise.
* c-c++-common/asan/pointer-compare-3.c: New test.
2018-02-05 Martin Liska <mliska@suse.cz>
* asan/asan_flags.inc: Cherry-pick upstream r323995.
* asan/asan_report.cc (CheckForInvalidPointerPair):
Cherry-pick upstream r323995.
From-SVN: r257387
Richard Sandiford [Mon, 5 Feb 2018 10:48:49 +0000 (10:48 +0000)]
[AArch64] Remove SVE XFAILs
These tests started passing after r257293, which had the side-effect
of renumbering the SSA names and leaving the COND_EXPRs in their
natural order.
This does show a deeper underlying issue that code generation is too
sensitive to internal things like SSA_NAME versions, but it no longer
affects these particular tests (for now).
2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/testsuite/
* gcc.target/aarch64/sve/vcond_4.c: Remove XFAILs.
* gcc.target/aarch64/sve/vcond_5.c: Likewise.
From-SVN: r257386
Richard Sandiford [Mon, 5 Feb 2018 10:47:56 +0000 (10:47 +0000)]
Adjust ira_init_register_move_cost comment
2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* ira.c (ira_init_register_move_cost): Adjust comment.
From-SVN: r257385
Martin Liska [Mon, 5 Feb 2018 09:59:16 +0000 (10:59 +0100)]
Fix GCOV documentation (PR gcov-profile/84137).
2018-02-05 Martin Liska <mliska@suse.cz>
PR gcov-profile/84137
* doc/gcov.texi: Fix typo in documentation.
From-SVN: r257384
Martin Liska [Mon, 5 Feb 2018 09:19:18 +0000 (10:19 +0100)]
Document --dynamic-list-data option for --coverage usage.
2018-02-05 Martin Liska <mliska@suse.cz>
PR gcov-profile/83879
* doc/gcov.texi: Document necessity of --dynamic-list-data when
using dlopen functionality.
From-SVN: r257383
Olga Makhotina [Mon, 5 Feb 2018 07:08:24 +0000 (07:08 +0000)]
Add missing mask[z]_range[_round]_s[d,s] intrinsics
gcc/
* config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
_mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
_mm_maskz_range_ss, _mm_mask_range_round_ss,
_mm_maskz_range_round_ss): New intrinsics.
(__builtin_ia32_rangesd128_round)
(__builtin_ia32_rangess128_round): Remove.
(__builtin_ia32_rangesd128_mask_round,
__builtin_ia32_rangess128_mask_round): New builtins.
* config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
__builtin_ia32_rangess128_round): Remove.
(__builtin_ia32_rangesd128_mask_round,
__builtin_ia32_rangess128_mask_round): New builtins.
* config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
(ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
"<round_saeonly_constraint>")): Changed to ...
((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
"<round_saeonly_scalar_constraint>")): ... this.
("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
%0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
%1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
%2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
gcc/testsuite
* gcc.target/i386/avx512dq-vrangesd-1.c (_mm_mask_range_sd,
_mm_maskz_range_sd, _mm_mask_range_round_sd,
_mm_maskz_range_round_sd): Test new intrinsics.
* gcc.target/i386/avx512dq-vrangesd-2.c (_mm_range_sd,
_mm_mask_range_sd, _mm_maskz_range_sd, _mm_range_round_sd,
_mm_mask_range_round_sd, _mm_maskz_range_round_sd): Test new intrinsics.
* gcc.target/i386/avx512dq-vrangess-1.c (_mm_mask_range_ss,
_mm_maskz_range_ss, _mm_mask_range_round_ss,
_mm_maskz_range_round_ss): Test new intrinsics.
* gcc.target/i386/avx512dq-vrangess-2.c (_mm_range_ss,
_mm_mask_range_ss, _mm_maskz_range_ss, _mm_range_round_ss,
_mm_mask_range_round_ss, _mm_maskz_range_round_ss): Test new intrinsics.
* gcc.target/i386/avx-1.c (__builtin_ia32_rangesd128_round,
__builtin_ia32_rangess128_round): Remove builtins.
(__builtin_ia32_rangesd128_mask_round,
__builtin_ia32_rangess128_mask_round): Test new builtins.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
From-SVN: r257382
Ian Lance Taylor [Mon, 5 Feb 2018 01:57:42 +0000 (01:57 +0000)]
compiler: update iota handling, fix using iota in array length
CL 71750 changed the definition of how iota works. This patch updates
gccgo for the new definition.
We've been mishandling iota appearing in a type that appears in a
const expression, as in `c = len([iota]int{})`. Correct that by copying
type expressions when we copy an expression. For simplicity only copy
when it can change the size of a type, as that is the only case where
iota in a type can affect the value of a constant (I think). This is
still a bunch of changes, but almost all boilerplate.
Fixes golang/go#22341
Reviewed-on: https://go-review.googlesource.com/91475
From-SVN: r257379
Ian Lance Taylor [Mon, 5 Feb 2018 01:53:23 +0000 (01:53 +0000)]
compiler: permit empty statements after fallthrough
The language spec permits empty statements after a fallthrough
statement, so implement that. Also give a better error message when a
fallthrough statement is in the wrong place. The test case for this
is in the master repository, test/fixedbugs/issue14540.go, just not
yet in the gccgo repository.
Fixes golang/go#14538
Reviewed-on: https://go-review.googlesource.com/91855
From-SVN: r257378
Ian Lance Taylor [Mon, 5 Feb 2018 01:50:22 +0000 (01:50 +0000)]
compiler: in range, evaluate array if it has receives or calls
The last change was incomplete, in that it did not evaluate the array
argument in some cases where it had to be evaluated. This reuses the
existing code for checking whether len/cap is constant.
Also clean up the use of _ as the second variable in a for/range,
which was previously inconsistent depending on whether the statement
used = or :=.
Updates golang/go#22313
Reviewed-on: https://go-review.googlesource.com/91715
From-SVN: r257377
Ian Lance Taylor [Mon, 5 Feb 2018 01:46:07 +0000 (01:46 +0000)]
compiler: give error for non-int arguments to make
This implements a requirement of the language spec.
While we're here fix the value returned by the type method of a
builtin call expression to make, although this doesn't seem to make
any difference anywhere since we lower this to a runtime call before
the determine_types pass anyhow.
There is already a test for this error in the master repository:
test/fixedbugs/issue16949.go. It just hasn't made it into the gccgo
testsuite yet.
Fixes golang/go#16949
Reviewed-on: https://go-review.googlesource.com/91697
From-SVN: r257376
Ian Lance Taylor [Mon, 5 Feb 2018 01:43:24 +0000 (01:43 +0000)]
compiler: don't error for goto over type or const declaration
We should only issue an error for a goto over a var declaration.
The test case for this is already in the master repository, at
test/fixedbugs/issue8042.go. It just hasn't been copied into the
gccgo repository yet.
Fixes golang/go#19089
Reviewed-on: https://go-review.googlesource.com/91696
From-SVN: r257375
Ian Lance Taylor [Mon, 5 Feb 2018 01:40:51 +0000 (01:40 +0000)]
compiler: correct parse of parenthesized select case
We used to mishandle `select { case (<-c): }` and friends.
The test case for this is https://golang.org/cl/91657.
Fixes golang/go#20923
Reviewed-on: https://go-review.googlesource.com/91695
From-SVN: r257374
Ian Lance Taylor [Mon, 5 Feb 2018 01:38:34 +0000 (01:38 +0000)]
cmd/go: don't lose last flag from _cgo_flags
The quoting code that read _cgo_flags, currently only in the gccgo
version of cmd/go, was losing the last flag read from the file.
Fixes golang/go#23666
Reviewed-on: https://go-review.googlesource.com/91655
From-SVN: r257373
GCC Administrator [Mon, 5 Feb 2018 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257372
Jan Hubicka [Sun, 4 Feb 2018 17:15:36 +0000 (18:15 +0100)]
re PR ipa/79966 (run time more than twice slower when using -fipa-cp-clone)
PR middle-end/79966
* gfortran.dg/pr79966.f90: New testcase
From-SVN: r257367
Joseph Myers [Sun, 4 Feb 2018 14:03:29 +0000 (14:03 +0000)]
* es.po: Update.
From-SVN: r257366
Joseph Myers [Sun, 4 Feb 2018 14:01:51 +0000 (14:01 +0000)]
* ru.po: Update.
From-SVN: r257365
Dominique d'Humieres [Sun, 4 Feb 2018 13:44:52 +0000 (14:44 +0100)]
re PR fortran/84094 (several correctness issues in gfortran.dg)
2018-02-04 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/84094
* gfortran.dg/associate_23.f90: Fix invalid code.
* gfortran.dg/intrinsic_actual_4.f90: Likewise.
* gfortran.dg/matmul_3.f90: Likewise.
* gfortran.dg/transfer_array_intrinsic_2.f90: Likewise.
From-SVN: r257364
Paul Thomas [Sun, 4 Feb 2018 13:18:33 +0000 (13:18 +0000)]
re PR fortran/84115 (Failure in associate construct with concatenated character target)
2018-02-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84115
* trans-decl.c (gfc_get_symbol_decl): Do not finish the decl of
'length' if the symbol charlen backend_decl is an indirect ref.
2018-02-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84115
* gfortran.dg/associate_34.f90: New test.
* gfortran.dg/associate_35.f90: New test.
From-SVN: r257363