Alexandre Oliva [Fri, 14 Dec 2018 20:06:15 +0000 (20:06 +0000)]
[PR86823] retain deferred access checks from outside firewall
We used to preserve deferred access check along with resolved template
ids, but a tentative parsing firewall introduced additional layers of
deferred access checks, so that we don't preserve the checks we
want to any more.
This patch moves the deferred access checks from outside the firewall
into it.
From: Jason Merrill <jason@redhat.com>
for gcc/cp/ChangeLog
PR c++/86823
* parser.c (cp_parser_template_id): Rearrange deferred access
checks into the firewall.
From: Alexandre Oliva <aoliva@redhat.com>
for gcc/testsuite/ChangeLog
PR c++/86823
* g++.dg/pr86823.C: New.
From-SVN: r267144
Jakub Jelinek [Fri, 14 Dec 2018 19:37:38 +0000 (20:37 +0100)]
re PR c++/82294 (Array of objects with constexpr constructors initialized from space-inefficient memory image)
PR c++/82294
PR c++/87436
* expr.h (categorize_ctor_elements): Add p_unique_nz_elts argument.
* expr.c (categorize_ctor_elements_1): Likewise. Compute it like
p_nz_elts, except don't multiply it by mult. Adjust recursive call.
Fix up COMPLEX_CST handling.
(categorize_ctor_elements): Add p_unique_nz_elts argument, initialize
it and pass it through to categorize_ctor_elements_1.
(mostly_zeros_p, all_zeros_p): Adjust categorize_ctor_elements callers.
* gimplify.c (gimplify_init_constructor): Likewise. Don't force
ctor into readonly data section if num_unique_nonzero_elements is
smaller or equal to 1/8 of num_nonzero_elements and size is >= 64
bytes.
* g++.dg/tree-ssa/pr82294.C: New test.
* g++.dg/tree-ssa/pr87436.C: New test.
From-SVN: r267143
Jakub Jelinek [Fri, 14 Dec 2018 19:36:33 +0000 (20:36 +0100)]
re PR c++/82294 (Array of objects with constexpr constructors initialized from space-inefficient memory image)
PR c++/82294
PR c++/87436
* init.c (build_vec_init): Change num_initialized_elts type from int
to HOST_WIDE_INT. Build a RANGE_EXPR if e needs to be repeated more
than once.
From-SVN: r267142
Thomas Preud'homme [Fri, 14 Dec 2018 19:20:29 +0000 (19:20 +0000)]
ARM] Improve robustness of -mslow-flash-data
Current code to handle -mslow-flash-data in machine description files
suffers from a number of issues which this patch fixes:
1) The insn_and_split in vfp.md to load a generic floating-point
constant via GPR first and move it to VFP register are guarded by
!reload_completed which is forbidden explicitely in the GCC internals
documentation section 17.2 point 3;
2) A number of testcase in the testsuite ICEs under -mslow-flash-data
when targeting the hardfloat ABI [1];
3) Instructions performing load from literal pool are not disabled.
These problems are addressed by 2 separate actions:
1) Making the splitters take a clobber and changing the expanders
accordingly to generate a mov with clobber in cases where a literal
pool would be used. The splitter can thus be enabled after reload since
it does not call gen_reg_rtx anymore;
2) Adding new predicates and constraints to disable literal pool loads
in existing instructions when -mslow-flash-data is in effect.
The patch also rework the splitter for DFmode slightly to generate an
intermediate DI load instead of 2 intermediate SI loads, thus relying on
the existing DI splitters instead of redoing their job. At last, the
patch adds some missing arm_fp_ok effective target to some of the
slow-flash-data testcases.
[1]
c-c++-common/Wunused-var-3.c
gcc.c-torture/compile/pr72771.c
gcc.c-torture/compile/vector-5.c
gcc.c-torture/compile/vector-6.c
gcc.c-torture/execute/
20030914-1.c
gcc.c-torture/execute/
20050316-1.c
gcc.c-torture/execute/pr59643.c
gcc.dg/builtin-tgmath-1.c
gcc.dg/debug/pr55730.c
gcc.dg/graphite/interchange-7.c
gcc.dg/pr56890-2.c
gcc.dg/pr68474.c
gcc.dg/pr80286.c
gcc.dg/torture/pr35227.c
gcc.dg/torture/pr65077.c
gcc.dg/torture/pr86363.c
g++.dg/torture/pr81112.C
g++.dg/torture/pr82985.C
g++.dg/warn/Wunused-var-7.C
and a lot more in libstdc++ in special_functions/*_comp_ellint_* and
special_functions/*_ellint_* directories.
2018-12-14 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* config/arm/arm.md (arm_movdi): Split if -mslow-flash-data and
source is a constant that would be loaded by literal pool.
(movsf expander): Generate a no_literal_pool_sf_immediate insn if
-mslow-flash-data is present, targeting hardfloat ABI and source is a
float constant that cannot be loaded via vmov.
(movdf expander): Likewise but generate a no_literal_pool_df_immediate
insn.
(arm_movsf_soft_insn): Split if -mslow-flash-data and source is a
float constant that would be loaded by literal pool.
(softfloat constant movsf splitter): Splitter for the above case.
(movdf_soft_insn): Split if -mslow-flash-data and source is a float
constant that would be loaded by literal pool.
(softfloat constant movdf splitter): Splitter for the above case.
* config/arm/constraints.md (Pz): Document existing constraint.
(Ha): Define constraint.
(Tu): Likewise.
* config/arm/predicates.md (hard_sf_operand): New predicate.
(hard_df_operand): Likewise.
* config/arm/thumb2.md (thumb2_movsi_insn): Split if
-mslow-flash-data and constant would be loaded by literal pool.
* constant/arm/vfp.md (thumb2_movsi_vfp): Likewise and disable constant
load in VFP register.
(movdi_vfp): Likewise.
(thumb2_movsf_vfp): Use hard_sf_operand as predicate for source to
prevent match for a constant load if -mslow-flash-data and constant
cannot be loaded via vmov. Adapt constraint accordingly by
using Ha instead of E for generic floating-point constant load.
(thumb2_movdf_vfp): Likewise using hard_df_operand predicate instead.
(no_literal_pool_df_immediate): Add a clobber to use as the
intermediate general purpose register and also enable it after reload
but disable it constant is a valid FP constant. Add constraints and
generate a DI intermediate load rather than 2 SI loads.
(no_literal_pool_sf_immediate): Add a clobber to use as the
intermediate general purpose register and also enable it after
reload.
2018-11-14 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/testsuite/
* gcc.target/arm/thumb2-slow-flash-data-2.c: Require arm_fp_ok
effective target.
* gcc.target/arm/thumb2-slow-flash-data-3.c: Likewise.
* gcc.target/arm/thumb2-slow-flash-data-4.c: Likewise.
* gcc.target/arm/thumb2-slow-flash-data-5.c: Likewise.
From-SVN: r267141
Iain Buclaw [Fri, 14 Dec 2018 18:03:58 +0000 (18:03 +0000)]
digest: Remove empty directory.
libphobos/ChangeLog:
2018-12-14 Iain Buclaw <ibuclaw@gdcproject.org>
* src/std/internal/digest: Remove empty directory.
From-SVN: r267138
Uros Bizjak [Fri, 14 Dec 2018 17:04:48 +0000 (18:04 +0100)]
re PR target/88474 (Inline built-in hypot for -ffast-math)
PR target/88474
* internal-fn.def (HYPOT): New.
* optabs.def (hypot_optab): New.
* config/i386/i386.md (hypot<mode>3): New expander.
From-SVN: r267137
Jeff Law [Fri, 14 Dec 2018 16:48:50 +0000 (09:48 -0700)]
* target.def (post_cfi_startproc): Fix text.
From-SVN: r267136
Sam Tebbs [Fri, 14 Dec 2018 15:52:05 +0000 (15:52 +0000)]
[PATCH 1/3][GCC] Add new target hook asm_post_cfi_startproc
2018-12-14 Sam Tebbs <sam.tebbs@arm.com>
* doc/tm.texi (TARGET_ASM_POST_CFI_STARTPROC): Define.
* doc/tm.texi.in (TARGET_ASM_POST_CFI_STARTPROC): Define.
* dwarf2out.c (dwarf2out_do_cfi_startproc): Trigger the hook.
* hooks.c (hook_void_FILEptr_tree): Define.
* hooks.h (hook_void_FILEptr_tree): Define.
* target.def (post_cfi_startproc): Define.
From-SVN: r267135
Tom de Vries [Fri, 14 Dec 2018 13:48:56 +0000 (13:48 +0000)]
[offloading] Error on missing symbols
When compiling an OpenMP or OpenACC program containing a reference in the
offloaded code to a symbol that has not been included in the offloaded code,
the offloading compiler may ICE in lto1.
Fix this by erroring out instead, mentioning the problematic symbol:
...
error: variable 'var' has been referenced in offloaded code but hasn't
been marked to be included in the offloaded code
lto1: fatal error: errors during merging of translation units
compilation terminated.
...
Build x86_64 with nvptx accelerator and reg-tested libgomp.
Build x86_64 and reg-tested libgomp.
2018-12-14 Tom de Vries <tdevries@suse.de>
* lto-cgraph.c (verify_node_partition): New function.
(input_overwrite_node, input_varpool_node): Use verify_node_partition.
* testsuite/libgomp.c-c++-common/function-not-offloaded-aux.c: New test.
* testsuite/libgomp.c-c++-common/function-not-offloaded.c: New test.
* testsuite/libgomp.c-c++-common/variable-not-offloaded.c: New test.
* testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c: New test.
* testsuite/libgomp.oacc-c-c++-common/variable-not-offloaded.c: New test.
From-SVN: r267134
H.J. Lu [Fri, 14 Dec 2018 12:38:04 +0000 (12:38 +0000)]
x86: Don't use get_frame_size when finalizing stack frame
get_frame_size () returns used stack slots during compilation, which
may be optimized out later. Since ix86_find_max_used_stack_alignment
is called by ix86_finalize_stack_frame_flags to check if stack frame
is required, there is no need to call get_frame_size () which may give
inaccurate final stack frame size.
Tested on AVX512 machine configured with
--with-arch=native --with-cpu=native
gcc/
PR target/88483
* config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
use get_frame_size ().
gcc/testsuite/
PR target/88483
* gcc.target/i386/stackalign/pr88483.c: New test.
From-SVN: r267133
Andrew Stubbs [Fri, 14 Dec 2018 11:49:28 +0000 (11:49 +0000)]
Fix LRA bug
This patch fixes an ICE building libgfortran/random.c.
The problem was an adddi3 instruction that had an eliminable frame pointer.
GCN adddi3 includes a match_scratch, which LRA substitutes with a REG, and
checks if it can be converted back to a scratch afterwards. In the meantime,
the add was converted to a move, meaning that the instruction pattern
completely changed, thus causing a segfault when the instruction is revisited
in restore_scratches.
2018-12-14 Andrew Stubbs <ams@codesourcery.com>
gcc/
* gcc/lra-int.h (lra_register_new_scratch_op): Add third parameter.
* gcc/lra-remat.c (update_scratch_ops): Pass icode to
lra_register_new_scratch_op.
* gcc/lra.c (struct sloc): Add icode field.
(lra_register_new_scratch_op): Add icode parameter.
Use icode to skip insns that have changed beyond recognition.
From-SVN: r267132
Eric Botcazou [Fri, 14 Dec 2018 11:08:15 +0000 (11:08 +0000)]
decl.c (rm_size): Take into account the padding in the case of a record type containing a template.
* gcc-interface/decl.c (rm_size): Take into account the padding in
the case of a record type containing a template.
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Size>: Likewise.
Do not subtract the padded size for Max_Size_In_Storage_Elements.
<Attr_Descriptor_Size>: Tweak comment.
From-SVN: r267131
Eric Botcazou [Fri, 14 Dec 2018 10:53:41 +0000 (10:53 +0000)]
dwarf2out.c (analyze_discr_in_predicate): Simplify.
* dwarf2out.c (analyze_discr_in_predicate): Simplify.
(analyze_variants_discr): Deal with naked boolean discriminants.
ada/
* gcc-interface/decl.c (choices_to_gnu): Directly use a naked boolean
discriminant if the value is the boolean true.
From-SVN: r267130
Claudiu Zissulescu [Fri, 14 Dec 2018 10:42:44 +0000 (11:42 +0100)]
[ARC] Fix millicode wrong blink restore.
The blink is restored wrongly when using millicode and regular load
instructions.
gcc/
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.c (arc_restore_callee_milli) Don't clobber off
variable.
testsuite/
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* gcc.target/arc/milli-1.c: New test.
From-SVN: r267129
Claudiu Zissulescu [Fri, 14 Dec 2018 10:42:32 +0000 (11:42 +0100)]
[ARC] Fix REG_CLASS_NAMES.
From-SVN: r267128
Tom de Vries [Fri, 14 Dec 2018 09:43:41 +0000 (09:43 +0000)]
[testsuite] Remove bashism from libbacktrace/allocfail.sh
Test-case libbacktrace/allocfail.sh contains bashism "set -o pipefail", which
makes the script fail on ubuntu 18.04, which links /bin/sh to /bin/dash.
Fix this by removing the "set -o pipefail".
Tested by running the test-case with dash on x86_64-linux.
2018-12-14 Tom de Vries <tdevries@suse.de>
PR testsuite/88491
* allocfail.sh: Remove "set -o pipefail".
From-SVN: r267127
Richard Biener [Fri, 14 Dec 2018 09:26:05 +0000 (09:26 +0000)]
gimple-ssa-split-paths.c (is_feasible_trace): Remove duplicated code block.
2018-12-14 Richard Biener <rguenther@suse.de>
* gimple-ssa-split-paths.c (is_feasible_trace): Remove
duplicated code block.
From-SVN: r267126
Alan Modra [Fri, 14 Dec 2018 09:03:50 +0000 (19:33 +1030)]
[RS6000] PR88311, mlongcall indirections are optimised away
Masking CALL_LONG from the cookie was done in order to simplify and
correct length attribute calculations for indirect calls at one point
in my call series tidy when the indirect patterns used alternatives
"0,n" on the cookie operand. (Leaving the CALL_LONG in place
calculated the wrong length for long calls without fp args.)
This is no longer necessary now that the indirect sysv call patterns
explicitly test for the fp arg bits in their length attribute
expressions. And without the CALL_LONG to disable insns like
call_value_local_svsv, combine merrily replaces the indirect long call
sequence with a direct call. As it should. This patch reinstates
the CALL_LONG bit.
PR rtl-optimization/88311
* config/rs6000/rs6000.c (rs6000_call_sysv): Do not mask cookie.
(rs6000_sibcall_sysv): Likewise.
From-SVN: r267123
Segher Boessenkool [Fri, 14 Dec 2018 08:29:34 +0000 (09:29 +0100)]
match_asm_constraints: Use copy_rtx where needed (PR88001)
The new insn here (temporarily) illegally shares RTL. This fixes it.
PR rtl-optimization/88001
* function.c (match_asm_constraints_1): Don't invalidly share RTL.
From-SVN: r267122
Bin Cheng [Fri, 14 Dec 2018 05:46:55 +0000 (05:46 +0000)]
auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even if autofdo counts are all zeros.
* auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even
if autofdo counts are all zeros.
From-SVN: r267121
Bin Cheng [Fri, 14 Dec 2018 05:42:56 +0000 (05:42 +0000)]
auto-profile.c (afdo_indirect_call): Skip generating histogram value for internal call.
* auto-profile.c (afdo_indirect_call): Skip generating histogram
value for internal call.
From-SVN: r267120
Bin Cheng [Fri, 14 Dec 2018 05:40:07 +0000 (05:40 +0000)]
auto-profile.c (AFDO_EINFO): New macro.
* auto-profile.c (AFDO_EINFO): New macro.
(class edge_info): New class.
(is_edge_annotated, set_edge_annotated): Delete.
(afdo_propagate_edge, afdo_propagate_circuit, afdo_propagate): Remove
parameter. Adjust edge count computation and annotation using class
edge_info.
(afdo_calculate_branch_prob, afdo_annotate_cfg): Likewise.
From-SVN: r267119
Michael Ploujnikov [Fri, 14 Dec 2018 00:19:08 +0000 (00:19 +0000)]
ipa-cp.c (print_all_lattices): Skip cp clones.
* ipa-cp.c (print_all_lattices): Skip cp clones.
* gcc.dg/lto/pr88297_0.c: New test.
* gcc.dg/lto/pr88297_1.c: New test.
From-SVN: r267118
GCC Administrator [Fri, 14 Dec 2018 00:16:55 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r267117
Michael Ploujnikov [Fri, 14 Dec 2018 00:15:08 +0000 (00:15 +0000)]
* ipa-cp.c: Fix various comment typos.
From-SVN: r267114
Jakub Jelinek [Thu, 13 Dec 2018 23:35:10 +0000 (00:35 +0100)]
re PR tree-optimization/88444 (ICE: tree check: expected ssa_name, have integer_cst in live_on_edge, at tree-vrp.c:468; or ICE: tree check: expected ssa_name, have integer_cst in get_value_range, at vr-values.c:84)
PR tree-optimization/88444
* tree-inline.c (fold_marked_statements): Iterate up to
last_basic_block_for_fn rather than n_basic_blocks_for_fn.
* gcc.dg/tree-ssa/pr88444.c: New test.
From-SVN: r267113
Jakub Jelinek [Thu, 13 Dec 2018 23:33:57 +0000 (00:33 +0100)]
re PR rtl-optimization/88470 (ICE in maybe_record_trace_start, at dwarf2cfi.c:2354)
PR rtl-optimization/88470
* cfgcleanup.c (outgoing_edges_match): If the function is
shrink-wrapped and bb1 ends with a JUMP_INSN with a single fake
edge to EXIT, return false.
* gcc.target/i386/pr88470.c: New test.
From-SVN: r267112
Martin Sebor [Thu, 13 Dec 2018 22:52:19 +0000 (22:52 +0000)]
extend.texi: Consistently use @code for const and volatile qualifiers...
gcc/ChangeLog:
* doc/extend.texi: Consistently use @code for const and volatile
qualifiers, the true and false constants, and asm statements.
From-SVN: r267111
Vladimir Makarov [Thu, 13 Dec 2018 20:54:27 +0000 (20:54 +0000)]
re PR rtl-optimization/88414 (ICE in lra_assign, at lra-assigns.c:1624)
2018-12-13 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/88414
* lra-int.h (lra_asm_error_p): New.
* lra-assigns.c (lra_assign): Check lra_asm_error_p for checking
call crossed pseudo assignment correctness.
(lra_split_hard_reg_for): Set up lra_asm_error_p.
* lra-constraints.c (curr_insn_transform): Ditto.
* lra.c (lra_asm_error_p): New.
(lra): Reset lra_asm_error_p.
2018-12-13 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/88414
* gcc.target/i386/pr88414.c: New.
From-SVN: r267109
Marek Polacek [Thu, 13 Dec 2018 20:47:32 +0000 (20:47 +0000)]
PR c++/88216 - ICE with class type in non-type template parameter.
* mangle.c (write_expression): Handle TARGET_EXPR and
VIEW_CONVERT_EXPR.
* pt.c (convert_nontype_argument): Don't call
get_template_parm_object for value-dependent expressions.
* g++.dg/cpp2a/nontype-class9.C: New test.
From-SVN: r267108
Jonathan Wakely [Thu, 13 Dec 2018 20:34:10 +0000 (20:34 +0000)]
Fix handling of POSIX paths containing a root-name
Fix path appending and concatenating to work correctly for a leading
root-name. Check a new macro, SLASHSLASH_IS_ROOT_NAME, instead of making
the behaviour depend directly on __CYGWIN__.
* src/filesystem/std-path.cc (SLASHSLASH_IS_ROOT_NAME): New macro to
control whether interpret paths with two slashes as a root-name.
(path::operator/=(const path&)) [SLASHSLASH_IS_ROOT_NAME]: Add a
root-directory when appending to a root-name.
(path::_M_append(basic_string_view<value_type>))
[SLASHSLASH_IS_ROOT_NAME]: Likewise.
(path::operator/=(const path&)) [SLASHSLASH_IS_ROOT_NAME]: Likewise.
(path::_M_concat(basic_string_view<value_type>))
[SLASHSLASH_IS_ROOT_NAME]: Likewise.
(path::lexically_normal()) [SLASHSLASH_IS_ROOT_NAME]: Use += instead
of /= to add a root-directory to the result.
* testsuite/27_io/filesystem/path/decompose/root_directory.cc: Fix
expected result for Cygwin.
From-SVN: r267107
Jonathan Wakely [Thu, 13 Dec 2018 20:33:55 +0000 (20:33 +0000)]
PR libstdc++/71044 optimize std::filesystem::path construction
This new implementation has a smaller footprint than the previous
implementation, due to replacing std::vector<_Cmpt> with a custom pimpl
type that only needs a single pointer. The _M_type enumeration is also
combined with the pimpl type, by using a tagged pointer, reducing
sizeof(path) further still.
Construction and modification of paths is now done more efficiently, by
splitting the input into a stack-based buffer of string_view objects
instead of a dynamically-allocated vector containing strings. Once the
final size is known only a single allocation is needed to reserve space
for it. The append and concat operations no longer require constructing
temporary path objects, nor re-parsing the entire native pathname.
This results in algorithmic improvements to path construction, and
working with large paths is much faster.
PR libstdc++/71044
* include/bits/fs_path.h (path::path(path&&)): Add noexcept when
appropriate. Move _M_cmpts instead of reparsing the native pathname.
(path::operator=(const path&)): Do not define as defaulted.
(path::operator/=, path::append): Call _M_append.
(path::concat): Call _M_concat.
(path::path(string_type, _Type): Change type of first parameter to
basic_string_view<value_type>.
(path::_M_append(basic_string_view<value_type>)): New member function.
(path::_M_concat(basic_string_view<value_type>)): New member function.
(_S_convert(value_type*, __null_terminated)): Return string view.
(_S_convert(const value_type*, __null_terminated)): Return string view.
(_S_convert(value_type*, value_type*))
(_S_convert(const value_type*, const value_type*)): Add overloads for
pairs of pointers.
(_S_convert(_InputIterator, __null_terminated)): Construct string_type
explicitly, for cases where _S_convert returns a string view.
(path::_S_is_dir_sep): Replace with non-member is_dir_sep.
(path::_M_trim, path::_M_add_root_name, path::_M_add_root_dir)
(path::_M_add_filename): Remove.
(path::_M_type()): New member function to replace _M_type data member.
(path::_List): Define new struct type instead of using std::vector.
(path::_Cmpt::_Cmpt(string_type, _Type, size_t)): Change type of
first parameter to basic_string_view<value_type>.
(path::operator+=(const path&)): Do not define inline.
(path::operator+=(const string_type&)): Call _M_concat.
(path::operator+=(const value_type*)): Likewise.
(path::operator+=(value_type)): Likewise.
(path::operator+=(basic_string_view<value_type>)): Likewise.
(path::operator/=(const path&)): Do not define inline.
(path::_M_append(path)): Remove.
* python/libstdcxx/v6/printers.py (StdPathPrinter): New printer that
understands the new path::_List type.
* src/filesystem/std-path.cc (is_dir_sep): New function to replace
path::_S_is_dir_sep.
(path::_Parser): New helper class to parse strings as paths.
(path::_List::_Impl): Define container type for path components.
(path::_List): Define members.
(path::operator=(const path&)): Define explicitly, to provide the
strong exception safety guarantee.
(path::operator/=(const path&)): Implement manually by processing
each component of the argument, rather than using _M_split_cmpts
to parse the entire string again.
(path::_M_append(string_type)): Likewise.
(path::operator+=(const path&)): Likewise.
(path::_M_concat(string_type)): Likewise.
(path::remove_filename()): Perform trim directly instead of calling
_M_trim().
(path::_M_split_cmpts()): Rewrite in terms of _Parser class.
(path::_M_trim, path::_M_add_root_name, path::_M_add_root_dir)
(path::_M_add_filename): Remove.
* testsuite/27_io/filesystem/path/append/source.cc: Test appending a
string view that aliases the path.
testsuite/27_io/filesystem/path/concat/strings.cc: Test concatenating
a string view that aliases the path.
From-SVN: r267106
Jakub Jelinek [Thu, 13 Dec 2018 19:44:50 +0000 (20:44 +0100)]
re PR rtl-optimization/88416 (ICE in in df_uses_record, at df-scan.c:3013)
PR rtl-optimization/88416
* valtrack.c (cleanup_auto_inc_dec): Handle pre/post-inc/dec/modify
even if !AUTO_INC_DEC.
* gcc.target/i386/pr88416.c: New test.
From-SVN: r267105
David Edelsohn [Thu, 13 Dec 2018 19:25:59 +0000 (19:25 +0000)]
rs6000.c (rs6000_function_arg): Ensure type is non-NULL.
* config/rs6000/rs6000.c (rs6000_function_arg): Ensure type is non-NULL.
(rs6000_arg_partial_bytes): Same.
From-SVN: r267104
Peter Bergner [Thu, 13 Dec 2018 18:04:11 +0000 (18:04 +0000)]
target.h (htm_available): Add support for PPC_FEATURE2_HTM_NO_SUSPEND.
libitm/
* config/powerpc/target.h (htm_available): Add support for
PPC_FEATURE2_HTM_NO_SUSPEND. Use __builtin_cpu_supports if available.
From-SVN: r267101
Tom de Vries [Thu, 13 Dec 2018 18:04:05 +0000 (18:04 +0000)]
[libgomp, nvptx] Fix libgomp.c/target-5.c compilation
Libgomp test-case libgomp.c/target-5.c is failing to compile when building for
x86_64 with nvptx accelerator due to missing:
- getpid
- gethostname
- isatty (pulled in by fwrite)
in the nvptx newlib.
This patch fixes the build failure by:
- adding a function gomp_print_string which limits the use of fwrite to a single
location (in affinity-fmt.c), and
- creating an nvptx version of affinity-fmt.c, which:
- overrides the configure test results HAVE_GETPID and HAVE_GETHOSTNAME, and
- implements fwrite using write.
Build and reg-tested on x86_64 with nvptx accelerator.
2018-12-13 Tom de Vries <tdevries@suse.de>
* affinity-fmt.c (gomp_print_string): New function, factored out of ...
(omp_display_affinity, gomp_display_affinity_thread): ... here, and ...
* fortran.c (omp_display_affinity_): ... here.
* libgomp.h (gomp_print_string): Declare.
* config/nvptx/affinity-fmt.c: New file. Include affinity-fmt.c,
undefining HAVE_GETPID and HAVE_GETHOSTNAME, and mapping fwrite to
write.
From-SVN: r267100
Jason Merrill [Thu, 13 Dec 2018 17:45:40 +0000 (12:45 -0500)]
gdbinit.in (pp): New macro.
* gdbinit.in (pp): New macro.
(pbb): Remove.
From-SVN: r267098
Jakub Jelinek [Thu, 13 Dec 2018 17:01:50 +0000 (18:01 +0100)]
re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with "not suitable for scatter store")
PR tree-optimization/88464
* tree-vect-stmts.c (vect_build_gather_load_calls): Handle INTEGER_TYPE
masktype if mask is non-NULL.
(vectorizable_load): Don't reject masked gather loads if masktype
in the decl is INTEGER_TYPE.
* gcc.target/i386/avx512f-pr88462-1.c: New test.
* gcc.target/i386/avx512f-pr88462-2.c: New test.
From-SVN: r267097
Nathan Sidwell [Thu, 13 Dec 2018 15:57:24 +0000 (15:57 +0000)]
[PR c++/87531] Fix second bug
https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00929.html
PR c++/87531
* class.c (finish_struct): Set DECL_CONTEXT of template assign op.
* name-lookup.c (get_class_binding_direct): Don't strip using-decl
of overload here.
* parser.c (cp_parser_postfix_expression): Cope with using decl in
overload set.
* semantics.c (finish_id_expr): Likewise.
* g++.dg/lookup/pr87531-2.C: New.
From-SVN: r267096
Rainer Orth [Thu, 13 Dec 2018 14:41:34 +0000 (14:41 +0000)]
Include gdc.test prefix in test names (PR testsuite/88041)
PR testsuite/88041
* lib/gdc-dg.exp (gdc-dg-test): Strip gdc.test prefix.
* gdc.test/gdc-test.exp (gdc-do-test): Create $subdir link.
Include $subdir in filename.
Cleanup generated source.
* gdc.test/compilable/ddoc9676a.d (EXTRA_SOURCES): Don't use
absolute path.
* gdc.test/compilable/depsOutput9948.d: Likewise.
From-SVN: r267094
Jakub Jelinek [Thu, 13 Dec 2018 12:53:19 +0000 (13:53 +0100)]
re PR libgomp/88460 ([nvptx] FAIL: libgomp.c++/for-24.C (internal compiler error))
PR libgomp/88460
* testsuite/libgomp.c++/for-24.C (results): Include it in
omp declare target region.
(main): Use map (always, tofrom: results) instead of
map (tofrom: results).
From-SVN: r267093
Jakub Jelinek [Thu, 13 Dec 2018 12:52:11 +0000 (13:52 +0100)]
re PR testsuite/88454 (test case gcc.dg/tree-ssa/split-path-5.c fails after r266971)
PR testsuite/88454
* gcc.dg/tree-ssa/split-path-5.c (__ctype_ptr__): Change type from
const char * to const signed char *.
(bmhi_init): Change pattern parameter's type the same. Use
__builtin_strlen instead of undeclared strlen.
From-SVN: r267092
Jonathan Wakely [Thu, 13 Dec 2018 12:26:52 +0000 (12:26 +0000)]
Fix [fs.path.gen] tests to use backslashes for mingw
The normalized paths contain backslashes so fix the expected values to
use backslashes too.
* testsuite/27_io/filesystem/path/generation/proximate.cc: Use
preferred directory separators for normalized paths.
* testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
From-SVN: r267090
Jonathan Wakely [Thu, 13 Dec 2018 12:09:33 +0000 (12:09 +0000)]
Fix test to work when path::native() returns wstring
* testsuite/27_io/filesystem/path/itr/traversal.cc: Fix test for
mingw.
From-SVN: r267089
Andreas Krebbel [Thu, 13 Dec 2018 11:57:16 +0000 (11:57 +0000)]
S/390: Fix zvector vec_double builtin
The (unsigned) long int to double vector conversion instructions
expect 2 immediate parameters. One for the inexact suppression
control and another one for the rounding mode. However, the
vec_double builtin has just the vector source operand. The 2
addtional operands need to be added with an intermediate expander.
The expanders were already there but unfortunately not wired up
correctly to the builtin.
gcc/ChangeLog:
2018-12-13 Andreas Krebbel <krebbel@linux.ibm.com>
* config/s390/s390-builtins.def (s390_vec_double_s64): Map to
s390_vec_double_s64 instead of s390_vcdgb.
(s390_vec_double_u64): Map to s390_vec_double_u64 instead of
s390_vcdlgb.
gcc/testsuite/ChangeLog:
2018-12-13 Andreas Krebbel <krebbel@linux.ibm.com>
* gcc.target/s390/zvector/vec-double-1.c: New test.
* gcc.target/s390/zvector/vec-double-2.c: New test.
From-SVN: r267084
Andreas Krebbel [Thu, 13 Dec 2018 11:55:43 +0000 (11:55 +0000)]
S/390: Use VEC_INEXACT/VEC_NOINEXACT instead of magic numbers.
2018-12-13 Andreas Krebbel <krebbel@linux.ibm.com>
* config/s390/vx-builtins.md ("vec_ctd_s64", "vec_ctd_u64")
("vec_ctsl", "vec_ctul"): Replace 0 with VEC_NOINEXACT.
("vec_double_s64", "vec_double_u64"): Replace 4 with VEC_INEXACT.
From-SVN: r267083
Jonathan Wakely [Thu, 13 Dec 2018 11:01:03 +0000 (11:01 +0000)]
Disable new tests for configurations with no libstdc++fs.a
* testsuite/27_io/filesystem/path/construct/80762.cc: Skip test if
the Filesystem TS support is not configured.
* testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
From-SVN: r267082
Kyrylo Tkachov [Thu, 13 Dec 2018 10:37:15 +0000 (10:37 +0000)]
[AArch64][doc] Clarify -msve-vector-bits=128 behaviour
We've received reports about the -msve-vector-bits=128 bits being somewhat ambiguous.
It isn't clear whether -msve-vector-bits=128 forces vector-length-agnostic code or whether
-msve-vector-bits=scalable forces 128-bit vector-lengh-specific code.
The latter is a, perhaps unintuitive, reading that we want to exclude.
This patch makes it more explicit that -msve-vector-bits=128 is special and produces
vector-length *agnostic* code. In the end, I've rewritten the whole option documentation.
Checked make pdf that the output looks reasonable.
* doc/invoke.texi (-msve-vector-bits): Clarify -msve-vector-bits=128
behavior.
From-SVN: r267081
Wei Xiao [Thu, 13 Dec 2018 08:57:28 +0000 (08:57 +0000)]
i386-common.c (processor_names): Add cascadelake.
gcc/
* common/config/i386/i386-common.c (processor_names): Add cascadelake.
(processor_alias_table): Add cascadelake.
* config.gcc: Add -march=cascadelake.
* config/i386/i386-c.c (ix86_target_macros_internal): Handle cascadelake.
* config/i386/i386.c (Add m_CASCADELAKE): New.
(processor_cost_table): Add cascadelake.
(get_builtin_code_for_version): Handle cascadelake.
* config/i386/i386.h (TARGET_CASCADELAKE, PROCESSOR_CASCADELAKE): New.
(PTA_CASCADELAKE): Ditto.
* doc/invoke.texi: Add -march=cascadelake.
gcc/testsuite/
* gcc.target/i386/funcspec-56.inc: Handle new march.
From-SVN: r267080
Arnaud Charlet [Thu, 13 Dec 2018 08:11:45 +0000 (09:11 +0100)]
Add note about abort and ZCX runtime.
Part of RC12-001
From-SVN: r267079
Jakub Jelinek [Thu, 13 Dec 2018 08:08:22 +0000 (09:08 +0100)]
re PR target/88465 (AVX512: optimize loading of constant values to kN registers)
PR target/88465
* config/i386/i386.md (*movdi_internal, *movsi_internal,
*movhi_internal, *movqi_internal): Add alternative(s) to load
0 or -1 into k registers using kxor or kxnoq instructions.
* gcc.target/i386/avx512f-pr88465.c: New test.
* gcc.target/i386/avx512dq-pr88465.c: New test.
From-SVN: r267078
Jakub Jelinek [Thu, 13 Dec 2018 08:00:42 +0000 (09:00 +0100)]
re PR target/88461 (AVX512: gcc should keep value in kN registers if possible)
PR target/88461
* config/i386/sse.md (VI1248_AVX512VLBW, AVX512ZEXTMASK): New
mode iterators.
(<avx512>_testm<mode>3<mask_scalar_merge_name>,
<avx512>_testnm<mode>3<mask_scalar_merge_name>): Merge patterns
with VI12_AVX512VL and VI48_AVX512VL iterators into ones with
VI1248_AVX512VLBW iterator.
(*<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext,
*<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext_mask,
*<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext,
*<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext_mask): New
define_insns.
* gcc.target/i386/pr88461.c: New test.
From-SVN: r267077
Jakub Jelinek [Thu, 13 Dec 2018 07:58:42 +0000 (08:58 +0100)]
re PR target/88461 (AVX512: gcc should keep value in kN registers if possible)
PR target/88461
* config/i386/i386.md (*zero_extendsidi2, zero_extend<mode>di2,
*zero_extend<mode>si2, *zero_extendqihi2): Add =*k, *km alternatives.
From-SVN: r267076
GCC Administrator [Thu, 13 Dec 2018 00:16:35 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r267074
Ian Lance Taylor [Wed, 12 Dec 2018 23:26:58 +0000 (23:26 +0000)]
runtime: handle DW_EH_PE_absptr in type table encoding
The type table encoding can be DW_EH_PE_absptr, but this case
was missing, which was causing abort on ARM32 EABI. Add the
missing case.
Reviewed-on: https://go-review.googlesource.com/c/153857
From-SVN: r267070
Jakub Jelinek [Wed, 12 Dec 2018 22:49:35 +0000 (23:49 +0100)]
re PR fortran/88463 (Rejects conforming source, OpenMP Parallel region Default(None) reference to module parameter array, separate source)
PR fortran/88463
* trans-openmp.c (gfc_omp_predetermined_sharing): Handle TREE_READONLY
VAR_DECLs with DECL_EXTERNAL like those with TREE_STATIC.
* testsuite/libgomp.fortran/pr88463-1.f90: New test.
* testsuite/libgomp.fortran/pr88463-2.f90: New test.
From-SVN: r267069
Ian Lance Taylor [Wed, 12 Dec 2018 22:48:46 +0000 (22:48 +0000)]
os/signal: increase deliver time for signal testcase
This increases the time to wait for signals to be delivered in the
TestAtomicStop testcase. When running gccgo tests on ppc64 or ppc64le,
there are intermittent failures in this test because the wait time is
too small.
Updates golang/go#29046
Reviewed-on: https://go-review.googlesource.com/c/153879
From-SVN: r267068
Jakub Jelinek [Wed, 12 Dec 2018 22:47:55 +0000 (23:47 +0100)]
omp-builtins.def (BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START, [...]): Fix up function types - remove one argument.
* omp-builtins.def (BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START,
BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START,
BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START,
BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START,
BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME,
BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME): Fix up
function types - remove one argument.
* testsuite/libgomp.c-c++-common/for-16.c: New test.
From-SVN: r267067
Paolo Carlini [Wed, 12 Dec 2018 21:36:26 +0000 (21:36 +0000)]
decl.c (grokdeclarator): Fix location of error message about static data member definition.
/cp
2018-12-12 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Fix location of error message about
static data member definition.
/testsuite
2018-12-12 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/other/static5.C: New.
From-SVN: r267066
Martin Sebor [Wed, 12 Dec 2018 21:02:41 +0000 (21:02 +0000)]
extend.texi (attribute copy): Fix typos.
gcc/ChangeLog:
* doc/extend.texi (attribute copy): Fix typos.
From-SVN: r267065
Martin Sebor [Wed, 12 Dec 2018 20:48:00 +0000 (20:48 +0000)]
extend.texi (Function Attributes): Clarify C++ aspects.
gcc/ChangeLog:
* doc/extend.texi (Function Attributes): Clarify C++ aspects.
(Variable Attributes): Same.
(Type Attributes): Same.
From-SVN: r267064
Segher Boessenkool [Wed, 12 Dec 2018 19:45:45 +0000 (20:45 +0100)]
Fix independent-cloneids-1.c testcase (PR88318)
The testcase uses REs like {(?n)\m_*bar[.$_]constprop[.$_]0:} to find
what functions are defined. But, this also matches lines like
.L.bar.constprop.0:(which are used on powerpc64-linux).
The "(?n)" doesn't do anything here either. We should use "^" here
instead of just "\m".
PR testsuite/88318
* gcc.dg/independent-cloneids-1.c: Use ^ not \m.
From-SVN: r267063
Olivier Hainque [Wed, 12 Dec 2018 17:12:25 +0000 (17:12 +0000)]
Add support for SUBTARGET_OVERRIDE_OPTIONS on aarch64
* config/aarch64/aarch64.c (aarch64_override_options): Once arch,
cpu and tune were validated, insert SUBTARGET_OVERRIDE_OPTIONS if
defined.
From-SVN: r267060
Olivier Hainque [Wed, 12 Dec 2018 17:10:44 +0000 (17:10 +0000)]
Use REGNUM macros in the definitions of aarch64 PROBE_STACK regs
* config/aarch64/aarch64.c (PROBE_STACK_FIRST_REG) : Redefine as
R9_REGNUM instead of 9.
(PROBE_STACK_SECOND_REG): Redefine as R10_REGNUM instead of 10.
From-SVN: r267059
Richard Earnshaw [Wed, 12 Dec 2018 16:31:12 +0000 (16:31 +0000)]
Fix PR number in my last commit
From-SVN: r267058
Jonathan Wakely [Wed, 12 Dec 2018 16:13:49 +0000 (16:13 +0000)]
Overload std::distance and std::advance for path::iterator
Although filesystem::path::iterator is only a bidirectional iterator,
the underlying sequence has random access iterators (specifically, raw
pointers). This means std::distance and std::advance can be implemented
more efficiently than the generic versions which apply ++ and --
repeatedly.
PR libstdc++/71044 (partial)
* include/bits/fs_path.h (__path_iter_distance, __path_iter_advance):
New friend functions to implement std::distance and std::advance more
efficiently.
(distance, advance): Add overloads for path::iterator.
* testsuite/27_io/filesystem/path/itr/components.cc: Test new
overload.
From-SVN: r267057
Jonathan Wakely [Wed, 12 Dec 2018 16:13:43 +0000 (16:13 +0000)]
PR libstdc++/80762 avoid ambiguous __constructible_from<void, void>
Ensure we don't try to instantiate __is_constructible_from<void, void>,
because there are two partial specializations that are equally good
matches.
PR libstdc++/80762
* include/bits/fs_path.h (path::_Path): Use remove_cv_t and is_void.
* include/experimental/bits/fs_path.h (path::_Path): Likewise.
* testsuite/27_io/filesystem/path/construct/80762.cc: New test.
* testsuite/experimental/filesystem/path/construct/80762.cc: New test.
From-SVN: r267056
Joel Brobecker [Wed, 12 Dec 2018 14:22:37 +0000 (14:22 +0000)]
require profiling support for gcc.dg/lto/
20100430-1_0.c test
This test currently fails unexpectedly if GCC is configured with
--disable-gcov, because it requires -fprofile-arcs. This patch
fixes the issue by requiring profiling support in order to run
this test.
Tested with two compilers, one built with --disable-gcov, resulting
in the test reporting an UNSUPPORTED result; and one built with gcov
support, resulting in 2 PASS tests.
gcc/testsuite/ChangeLog:
* gcc.dg/lto/
20100430-1_0.c: Add dg-require-profiling requirement.
From-SVN: r267055
Tom de Vries [Wed, 12 Dec 2018 13:50:51 +0000 (13:50 +0000)]
[libbacktrace] Add allocfail.sh test-case
Add test-case that forces alloc.c functions to fail, and check whether fail
handling is robust.
This is the test-case for "[libbacktrace] Fix segfault upon allocation
failure". Without that patch, this test-case fails like this:
...
allocfail.sh: line 71: 26041 Segmentation fault (core dumped) \
./allocfail $i > /dev/null 2>&1
Unallowed fail found: 13
FAIL allocfail.sh (exit status: 1)
...
This is a seperate patch because the test-case is nontrivial.
Bootstrapped and reg-tested on x86_64.
2018-12-12 Tom de Vries <tdevries@suse.de>
* Makefile.am (TESTS): Add allocfail.sh.
(check_PROGRAMS): Add allocfail.
* Makefile.in: Regenerate.
* instrumented_alloc.c: New file. Redefine malloc and realloc.
Include alloc.c.
* allocfail.c: New file.
* allocfail.sh: New file.
From-SVN: r267054
Eric Botcazou [Wed, 12 Dec 2018 11:40:28 +0000 (11:40 +0000)]
re PR target/86806 (SPARC port needs updating for CVE-2017-5753)
PR target/86806
* config/sparc/sparc.md (unspecv): Add UNSPECV_SPECULATION_BARRIER.
(speculation_barrier): New instruction for V9.
From-SVN: r267053
Andreas Schwab [Wed, 12 Dec 2018 11:22:42 +0000 (11:22 +0000)]
Don't mark stack pointer as clobbered in asm
* config/linux/ia64/futex.h (sys_futex0): Don't mark r12 as
clobbered.
From-SVN: r267052
Rasmus Villemoes [Wed, 12 Dec 2018 10:12:36 +0000 (11:12 +0100)]
libgcc: rs6000: tramp.S: fix placement of .cfi_endproc for __trampoline_setup
Currently, .cfi_endproc and FUNC_END(__trampoline_setup) are placed
inside the #else branch of an "#if defined (__VXWORKS__) ...", so
non-pic vxworks does not get proper CFI nor a .size directive for
__trampoline_setup. I assume there's no magic reason for that (which
would warrant a comment), so move them outside.
From-SVN: r267051
Iain Sandoe [Wed, 12 Dec 2018 09:25:13 +0000 (09:25 +0000)]
rs6000 - add missed hunk
This add the hunk
(macho_call_template): Remove.
missed from r267049
From-SVN: r267050
Segher Boessenkool [Wed, 12 Dec 2018 08:53:49 +0000 (09:53 +0100)]
rs6000 - Fix PR target/88343
The PR is about unnecessary saves of the pic base register, it shows on m32 Linux and m32/m64 Darwin.
The fix is to check that we are in a pic mode and that the picbase has actually been used.
As a bonus, some #ifdef’d TARGET_MACHO code is no longer required.
2018-12-12 Segher Boessenkool <segher@kernel.crashing.org>
Iain Sandoe <iain@sandoe.co.uk>
PR target/88343
* config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg
unless it has been used.
(first_reg_to_save): Remove dead code.
Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk>
From-SVN: r267049
Iain Sandoe [Wed, 12 Dec 2018 08:47:16 +0000 (08:47 +0000)]
rs6000, update Darwin call handling to latest scheme.
This patch mormalises Darwin's call handling to match the scheme
recently introduced and gives it target-specific call expanders.
2018-12-12 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/rs6000-protos.h (rs6000_call_darwin): New.
(rs6000_sibcall_darwin): New. (macho_call_template): Remove.
* config/rs6000/rs6000.c (get_prev_label): Forward declaration.
(rs6000_call_template_1): Handle Darwin.
(macho_call_template): Remove.
(rs6000_call_sysv): Remove handling for Darwin.
(rs6000_call_darwin_1, rs6000_call_darwin): New
(rs6000_sibcall_darwin): New.
* config/rs6000/rs6000.md (define_expand “call”): Handle Darwin
with its own expander. (define_expand “call_value”): Likewise.
(define_expand “sibcall”): Likewise.
(define_expand “sibcall_value”): Likewise.
(call_nonlocal_sysv): Remove Darwin special-casing.
(call_value_nonlocal_sysv): Likewise.
From-SVN: r267048
Jakub Jelinek [Wed, 12 Dec 2018 08:44:27 +0000 (09:44 +0100)]
re PR c++/88446 (__builtin_is_constant_evaluated rejects some converted constant expressions.)
PR c++/88446
* cp-tree.h (maybe_constant_value): Add manifestly_const_eval
argument.
* constexpr.c (struct constexpr_call): Rename pretend_const_required
member to manifestly_const_eval.
(struct constexpr_ctx): Likewise.
(constexpr_call_hasher::equal): Adjust users.
(cxx_eval_builtin_function_call): Likewise. Formatting fix.
(cxx_eval_call_expression): Adjust users.
(cxx_eval_outermost_constant_expr, maybe_constant_init_1,
maybe_constant_init): Rename pretend_const_required argument to
manifestly_const_eval, adjust function comments.
(maybe_constant_value): Add manifestly_const_eval argument. If true,
don't cache and call cxx_eval_outermost_constant_expr with true as
manifestly_const_eval.
* decl.c (compute_array_index_type_loc): Call maybe_constant_value
with true as manifestly_const_eval.
* g++.dg/cpp2a/is-constant-evaluated3.C: New test.
From-SVN: r267047
Iain Sandoe [Wed, 12 Dec 2018 08:42:28 +0000 (08:42 +0000)]
rs6000, darwin - fix bootstrap.
Recent changes to the lowerings for call handling in rs6000
have broken bootstrap for powerpc-darwin. This patch modifies
the calls to handle Darwin asa subset, a subsequent patch will
split Darwin out.
2018-12-12 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/darwin.md (call_indirect_nonlocal_darwin64): Remove.
(call_nonlocal_darwin64): Remove.
(call_value_indirect_nonlocal_darwin64): Remove.
(call_value_nonlocal_darwin64): Remove.
* config/rs6000/rs6000.c (rs6000_call_template_1): Handle Darwin with
the same asm output as AIX/ELFv2. (rs6000_call_sysv): Preserve the
CALL_LONG flag when needed for Darwin.
* config/rs6000/rs6000.md (define expand “call”): Expand Darwin as
per sysv.
(define_expand “call_value”): Likewise.
(define_expand “sibcall”): Likewise.
(define_expand “sibcall_value”): Likewise.
(call_indirect_nonlocal_sysv): Mark the clobber mode P.
(call_nonlocal_sysv): Likewise.
(call_nonlocal_sysv_secure): Likewise.
(call_value_indirect_nonlocal_sysv): Likewise.
(call_value_nonlocal_sysv): Likewise.
(call_value_nonlocal_sysv_secure): Likewise.
(call_local64): Mark the clobber DI.
(call_value_local64): Likewise.
From-SVN: r267046
Jakub Jelinek [Wed, 12 Dec 2018 08:31:01 +0000 (09:31 +0100)]
P0595R2 - is_constant_evaluated
P0595R2 - is_constant_evaluated
* include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED):
Define if __builtin_is_constant_evaluated is available.
* include/std/type_traits (std::is_constant_evaluated): New constexpr
inline function.
* testsuite/20_util/is_constant_evaluated/1.cc: New test.
* testsuite/20_util/is_constant_evaluated/noexcept.cc: New test.
From-SVN: r267045
Jakub Jelinek [Wed, 12 Dec 2018 08:28:43 +0000 (09:28 +0100)]
re PR c++/88449 (__builtin_is_constant_evaluated misbehaves due to constexpr call caching)
PR c++/88449
* constexpr.c (struct constexpr_call): Add pretend_const_required
member.
(constexpr_call_hasher::equal): Return false if pretend_const_required
members differ.
(cxx_eval_call_expression): Adjust new_call initialization. Hash in
ctx->pretend_const_required.
* g++.dg/cpp2a/is-constant-evaluated1.C: Change from dg-do compile
to dg-do run.
(e): Adjust comment with correct expected value.
(main): Expect e == 1.
* g++.dg/cpp2a/is-constant-evaluated2.C: New test.
From-SVN: r267044
Steven G. Kargl [Wed, 12 Dec 2018 00:53:08 +0000 (00:53 +0000)]
re PR fortran/88155 (ICE in gfc_format_decoder, at fortran/error.c:947)
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88155
* primary.c (gfc_match_structure_constructor): Set the locus of
an expression to avoid a NULL pointer dereference.
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88155
* gfortran.dg/pr70870_1.f90: Update testcase to use -std=gnu.
* gfortran.dg/pr88155.f90: New test.
From-SVN: r267041
GCC Administrator [Wed, 12 Dec 2018 00:16:18 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r267040
Steven G. Kargl [Tue, 11 Dec 2018 23:13:19 +0000 (23:13 +0000)]
re PR fortran/88249 (ICE in gfc_resolve_filepos, at fortran/io.c:2853)
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88249
* gfortran.h: Update prototype for gfc_resolve_filepos().
* io.c (gfc_resolve_filepos): Check for UNIT number if ERR= is present.
Use passed in locus for error message.
* resolve.c (gfc_resolve_code): Pass locus in gfc_resolve_filepos()
call.
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88249
* gfortran.dg/pr88249.f90: New test.
From-SVN: r267035
Eric Botcazou [Tue, 11 Dec 2018 23:04:39 +0000 (23:04 +0000)]
re PR ada/88429 (libada build fails with --disable-shared)
libada/
PR ada/88429
* configure.ac (default_gnatlib_target): Set to gnatlib instead of
gnatlib-plain if --disable-shared.
* configure: Regenerate.
* Makefile.in (all): Replace gnatlib prerequisite with libada.
(ADA_RTS_SUBDIR): Delete.
(libada): New target, renamed from...
(gnatlib): ...this. Merge with other library targets.
(gnatlib-plain): Delete.
(install-gnatlib): Rename to...
(install-libada): ...this.
(install): Replace install-gnatlib prerequisite with install-libada.
gcc/ada/
PR ada/88429
* gcc-interface/Makefile.in (./stamp-gnatlib1-$(RTSDIR)): Also pass
MULTISUBDIR to sub-make and add quotes around $(THREAD_KIND).
(gnatlib-shared-dual): Also pass PICFLAG_FOR_TARGET to sub-make.
(gnatlib-sjlj): Also pass MULTISUBDIR to sub-make, but do not pass
PICFLAG_FOR_TARGET.
(gnatlib-zcx): Likewise.
From-SVN: r267034
Ian Lance Taylor [Tue, 11 Dec 2018 20:50:59 +0000 (20:50 +0000)]
runtime: use _URC_FAILURE on ARM32
ARM32 EABI unwinder does not define _URC_NORMAL_STOP. Instead,
it has _URC_FAILURE. Use _URC_FAILURE there.
Should fix ARM32 build.
Reviewed-on: https://go-review.googlesource.com/c/153417
From-SVN: r267033
Jakub Jelinek [Tue, 11 Dec 2018 20:37:53 +0000 (21:37 +0100)]
re PR c++/87861 (ICE in output_constructor_regular_field, at varasm.c:5165)
PR c++/87861
* class.c (build_vtbl_initializer): For TARGET_VTABLE_USES_DESCRIPTORS
bump index for each added word.
* constexpr.c (find_array_ctor_elt): Add forward declaration.
(cxx_eval_call_expression): Handle TARGET_VTABLE_USES_DESCRIPTORS
vtable calls.
(cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Divide token
by TARGET_VTABLE_USES_DESCRIPTORS if non-zero.
From-SVN: r267032
Jakub Jelinek [Tue, 11 Dec 2018 20:28:35 +0000 (21:28 +0100)]
re PR tree-optimization/80520 (Performance regression from missing if-conversion)
PR tree-optimization/80520
* gcc.dg/tree-ssa/split-path-11.c (foo): Make the test ilp32 target
clean.
From-SVN: r267031
Marek Polacek [Tue, 11 Dec 2018 18:53:03 +0000 (18:53 +0000)]
PR c++/86608 - reading constexpr volatile variable.
* constexpr.c (potential_constant_expression_1): Check want_rval
instead of checking if we have a decl.
* decl2.c (decl_maybe_constant_var_p): Don't consider volatile
constexpr variables as maybe constant.
* g++.dg/cpp0x/constexpr-volatile2.C: New test.
* g++.dg/cpp0x/pr65327.C: Add dg-error.
From-SVN: r267030
Paolo Carlini [Tue, 11 Dec 2018 17:47:56 +0000 (17:47 +0000)]
decl.c (grokvardecl): Add location_t parameter and use it in build_lang_decl_loc and build_decl calls.
/cp
2018-12-11 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokvardecl): Add location_t parameter and use it
in build_lang_decl_loc and build_decl calls.
(grokdeclarator): Move up loc declaration and use it in the
grokvardecl call too.
/testsuite
2018-12-11 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/pr53037-4.C: Test the first two locations too.
From-SVN: r267029
Paolo Carlini [Tue, 11 Dec 2018 17:47:47 +0000 (17:47 +0000)]
decl.c (grokvardecl): Add location_t parameter and use it in build_lang_decl_loc and build_decl calls.
/cp
2018-12-11 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokvardecl): Add location_t parameter and use it
in build_lang_decl_loc and build_decl calls.
(grokdeclarator): Move up loc declaration and use it in the
grokvardecl call too.
/testsuite
2018-12-11 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/pr53037-4.C: Test the first two locations too.
From-SVN: r267028
Paolo Carlini [Tue, 11 Dec 2018 17:46:42 +0000 (17:46 +0000)]
decl2.c (grokvardecl): Add location_t parameter and use it in build_lang_decl_loc and build_decl calls.
/cp
2018-12-11 Paolo Carlini <paolo.carlini@oracle.com>
* decl2.c (grokvardecl): Add location_t parameter and use it
in build_lang_decl_loc and build_decl calls.
(grokdeclarator): Move up loc declaration and use it in the
grokvardecl call too.
/testsuite
2018-12-11 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/pr53037-4.C: Test the first two locations too.
From-SVN: r267027
Jakub Jelinek [Tue, 11 Dec 2018 17:16:48 +0000 (18:16 +0100)]
re PR tree-optimization/88444 (ICE: tree check: expected ssa_name, have integer_cst in live_on_edge, at tree-vrp.c:468; or ICE: tree check: expected ssa_name, have integer_cst in get_value_range, at vr-values.c:84)
PR tree-optimization/88444
* tree-vrp.c (register_edge_assert_for_2): Only register assertions
for conversions if rhs1 is a SSA_NAME.
* gcc.dg/pr88444.c: New test.
From-SVN: r267026
Dimitar Dimitrov [Tue, 11 Dec 2018 15:50:51 +0000 (15:50 +0000)]
cfgexpand.c (asm_clobber_reg_is_valid): Also produce error when stack pointer is clobbered.
gcc/
2018-12-11 Dimitar Dimitrov <dimitar@dinux.eu>
* cfgexpand.c (asm_clobber_reg_is_valid): Also produce
error when stack pointer is clobbered.
(expand_asm_stmt): Refactor clobber check in separate function.
gcc/testsuite/
2018-12-11 Dimitar Dimitrov <dimitar@dinux.eu>
* gcc.target/i386/pr52813.c: New test.
From-SVN: r267025
Eric Botcazou [Tue, 11 Dec 2018 15:03:29 +0000 (15:03 +0000)]
Fix stack offsets and alloca alignments on ppc-vxworks
* config/rs6000/vxworks.h (RS6000_STARTING_FRAME_OFFSET): Define,
accounting for STACK_BOUNDARY 128 regardless of TARGET_ALTIVEC/VSX.
(STACK_DYNAMIC_OFFSET): Likewise.
From-SVN: r267024
Jakub Jelinek [Tue, 11 Dec 2018 14:50:22 +0000 (15:50 +0100)]
re PR target/88425 (suboptimal code for a<imm?-1:0)
PR target/88425
* config/i386/i386.md (*x86_mov<SWI48:mode>cc_0_m1_neg_leu<SWI:mode>):
New define_insn_and_split.
* gcc.target/i386/pr88425.c: New test.
From-SVN: r267023
Jakub Jelinek [Tue, 11 Dec 2018 13:51:44 +0000 (14:51 +0100)]
re PR sanitizer/88426 (Compiler crash if use special code with command line switch -fsanitize=float-cast-overflow)
PR sanitizer/88426
* c-convert.c (convert): Call c_fully_fold before calling
ubsan_instrument_float_cast.
* c-c++-common/ubsan/float-cast-overflow-11.c: New test.
From-SVN: r267022
Richard Biener [Tue, 11 Dec 2018 13:00:49 +0000 (13:00 +0000)]
re PR middle-end/88448 (gnat.dg/opt66.adb etc. FAIL)
2018-12-11 Richard Biener <rguenther@suse.de>
PR middle-end/88448
PR middle-end/88415
* gimple.c (gimple_assign_set_rhs_with_ops): Revert previous
change.
* tree-complex.c (update_complex_assignment): Properly transfer
or clean EH info around gimple_assign_set_rhs_with_ops.
From-SVN: r267021
Nick Clifton [Tue, 11 Dec 2018 11:59:53 +0000 (11:59 +0000)]
Fix a failure in the libiberty testsuite by increasing the demangle recursion limit to 2048.
PR 88409
* demangle.h (DEMANGLE_RECURSION_LIMIT): Increase to 2048.
From-SVN: r267020
Richard Earnshaw [Tue, 11 Dec 2018 11:26:15 +0000 (11:26 +0000)]
[aarch64] PR target/87369 Prefer bsl/bit/bif for copysign
The copysign operations will almost always be performed on values in
floating-point registers. As such, we do not want the compiler to
simplify the operations into code sequences that can only be done
using the general-purpose register set. Unfortunately, this is what
is currently happening.
Fortunately, it seems quite unlikely that copysign() will be
subsequently followed by other logical operations on the values
involved, so I think it is acceptable to use an unspec here. This
allows us to preserve the operation in a form that allows the register
allocator to make the right choice later on, without limitation on the
final form of the operation (well, if we do end up using the gp
register bank, we get a dead constant load that we cannot easily
eliminate at a late stage).
PR target/37369
* config/aarch64/iterators.md (sizem1): Add sizes for SFmode and DFmode.
(Vbtype): Add SFmode mapping.
* config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete.
(copysign<GPF:mode>3): New expand pattern.
(copysign<GPF:mode>3_insn): New insn pattern.
From-SVN: r267019
Piotr Trojanek [Tue, 11 Dec 2018 11:12:41 +0000 (11:12 +0000)]
[Ada] Add "Global => null" contracts to Ada.Calendar routines
Routines in Ada.Real_Time are already annotated with Global => null
contracts to suppress spurious warnings from the flow analysis in
GNATprove. This patch adds such contracts to Ada.Calendar. No change in
runtime behavior expected.
2018-12-11 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* libgnat/a-calend.ads: Add "Global => null" contracts to pure
routines.
From-SVN: r267018
Hristian Kirtchev [Tue, 11 Dec 2018 11:12:37 +0000 (11:12 +0000)]
[Ada] Spurious error with pragma Thread_Local_Storage
The following patch modifies the checks related to pragma
Thread_Local_Storage to correct a confusion in semantics which led to
spurious errors.
------------
-- Source --
------------
-- pack.ads
package Pack is
type Arr is array (1 .. 5) of Boolean;
type Arr_With_Default is array (1 .. 5) of Boolean
with Default_Component_Value => False;
type Int is new Integer range 1 .. 5;
type Int_With_Default is new Integer range 1 .. 5
with Default_Value => 1;
protected type Prot_Typ is
entry E;
end Prot_Typ;
type Rec_1 is record
Comp : Integer;
end record;
type Rec_2 is record
Comp : Int;
end record;
type Rec_3 is record
Comp : Int_With_Default;
end record;
task type Task_Typ is
entry E;
end Task_Typ;
end Pack;
-- pack.adb
package body Pack is
function F (Val : Int) return Int is
begin
if Val <= 1 then
return 1;
else
return F (Val - 1) * Val;
end if;
end F;
function F (Val : Int_With_Default) return Int_With_Default is
begin
if Val <= 1 then
return 1;
else
return F (Val - 1) * Val;
end if;
end F;
function F (Val : Integer) return Integer is
begin
if Val <= 1 then
return 1;
else
return F (Val - 1) * Val;
end if;
end F;
protected body Prot_Typ is
entry E when True is begin null; end E;
end Prot_Typ;
task body Task_Typ is
begin
accept E;
end Task_Typ;
Obj_1 : Arr; -- OK
pragma Thread_Local_Storage (Obj_1);
Obj_2 : Arr := (others => True); -- OK
pragma Thread_Local_Storage (Obj_2);
Obj_3 : Arr := (others => F (2) = Integer (3)); -- ERROR
pragma Thread_Local_Storage (Obj_3);
Obj_4 : Arr_With_Default; -- ERROR
pragma Thread_Local_Storage (Obj_4);
Obj_5 : Arr_With_Default := (others => True); -- OK
pragma Thread_Local_Storage (Obj_5);
Obj_6 : Arr_With_Default := (others => F (2) = Integer (3)); -- ERROR
pragma Thread_Local_Storage (Obj_6);
Obj_7 : Integer; -- OK
pragma Thread_Local_Storage (Obj_7);
Obj_8 : Integer := 1; -- OK
pragma Thread_Local_Storage (Obj_8);
Obj_9 : Integer := F (2); -- ERROR
pragma Thread_Local_Storage (Obj_9);
Obj_10 : Int; -- OK
pragma Thread_Local_Storage (Obj_10);
Obj_11 : Int := 1; -- OK
pragma Thread_Local_Storage (Obj_11);
Obj_12 : Int := F (2); -- ERROR
pragma Thread_Local_Storage (Obj_12);
Obj_13 : Int_With_Default; -- ERROR
pragma Thread_Local_Storage (Obj_13);
Obj_14 : Int_With_Default := 1; -- OK
pragma Thread_Local_Storage (Obj_14);
Obj_15 : Int_With_Default := F (2); -- ERROR
pragma Thread_Local_Storage (Obj_15);
Obj_16 : Prot_Typ; -- ERROR
pragma Thread_Local_Storage (Obj_16);
Obj_17 : Rec_1; -- OK
pragma Thread_Local_Storage (Obj_17);
Obj_18 : Rec_1 := (others => 1); -- OK
pragma Thread_Local_Storage (Obj_18);
Obj_19 : Rec_1 := (others => F (2)); -- ERROR
pragma Thread_Local_Storage (Obj_19);
Obj_20 : Rec_2; -- OK
pragma Thread_Local_Storage (Obj_20);
Obj_21 : Rec_2 := (others => 1); -- OK
pragma Thread_Local_Storage (Obj_21);
Obj_22 : Rec_2 := (others => F (2)); -- ERROR
pragma Thread_Local_Storage (Obj_22);
Obj_23 : Rec_3; -- ERROR
pragma Thread_Local_Storage (Obj_23);
Obj_24 : Rec_3 := (others => 1); -- OK
pragma Thread_Local_Storage (Obj_24);
Obj_25 : Rec_3 := (others => F (2)); -- ERROR
pragma Thread_Local_Storage (Obj_25);
Obj_26 : Task_Typ; -- ERROR
pragma Thread_Local_Storage (Obj_26);
end Pack;
----------------------------
-- Compilation and output --
----------------------------
$ gcc -c pack.adb
pack.adb:47:04: Thread_Local_Storage variable "Obj_4" is improperly
initialized
pack.adb:47:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:62:04: Thread_Local_Storage variable "Obj_9" is improperly
initialized
pack.adb:62:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:71:04: Thread_Local_Storage variable "Obj_12" is improperly
initialized
pack.adb:71:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:74:04: Thread_Local_Storage variable "Obj_13" is improperly
initialized
pack.adb:74:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:80:04: Thread_Local_Storage variable "Obj_15" is improperly
initialized
pack.adb:80:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:83:04: Thread_Local_Storage variable "Obj_16" is improperly
initialized
pack.adb:83:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:92:04: Thread_Local_Storage variable "Obj_19" is improperly
initialized
pack.adb:92:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:101:04: Thread_Local_Storage variable "Obj_22" is improperly
initialized
pack.adb:101:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:104:04: Thread_Local_Storage variable "Obj_23" is improperly
initialized
pack.adb:104:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:110:04: Thread_Local_Storage variable "Obj_25" is improperly
initialized
pack.adb:110:04: only allowed initialization is explicit "null", static
expression or static aggregate
pack.adb:113:04: Thread_Local_Storage variable "Obj_26" is improperly
initialized
pack.adb:113:04: only allowed initialization is explicit "null", static
expression or static aggregate
2018-12-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* freeze.adb (Check_Pragma_Thread_Local_Storage): Use the
violating set to diagnose detect an illegal initialization,
rather than the complement of the OK set.
(Freeze_Object_Declaration): Factorize code in
Has_Default_Initialization.
(Has_Default_Initialization, Has_Incompatible_Initialization):
New routines.
From-SVN: r267017