Jeff Law [Fri, 12 Jul 2019 15:40:39 +0000 (09:40 -0600)]
c6x.c (c6x_section_type): Clear SECTION_NOTYPE for the ".far" section.
* config/c6x/c6x.c (c6x_section_type): Clear SECTION_NOTYPE
for the ".far" section.
From-SVN: r273447
Richard Biener [Fri, 12 Jul 2019 14:36:50 +0000 (14:36 +0000)]
re PR tree-optimization/91145 (ICE: in vect_build_slp_tree_2, at tree-vect-slp.c:1143 with -march=skylake-avx512 -O3)
2019-07-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/91145
* tree-vect-slp.c (vect_build_slp_tree_2): Fix reduction
chain check.
* gcc.dg/torture/pr91145.c: New testcase.
From-SVN: r273445
Alexandre Oliva [Fri, 12 Jul 2019 13:51:00 +0000 (13:51 +0000)]
allow EH to escape from GIMPLE_EH_ELSE ELSE block
The only preexisting use of GIMPLE_EH_ELSE, for transactional memory
commits, did not allow exceptions to escape from the ELSE path. The
trick it uses to allow the ELSE path to see the propagating exception
does not work very well if the exception cleanup raises further
exceptions: the ELSE block is configured to handle exceptions in
itself. This confuses the heck out of CFG and EH cleanups.
Basing the lowering context for the ELSE block on outer_state, rather
than this_state, gets us the expected enclosing handler.
for gcc/ChangeLog
* tree-eh.c (honor_protect_cleanup_actions): Use outer_
rather than this_state as the lowering context for the ELSE
seq in a GIMPLE_EH_ELSE.
for gcc/testsuite/ChangeLog
* gcc.dg/gimplefe-44.c: New.
From-SVN: r273444
Alexandre Oliva [Fri, 12 Jul 2019 13:50:49 +0000 (13:50 +0000)]
introduce try/finally/else in gimplefe
for gcc/c/ChangeLog
* gimple-parser.c (c_parser_gimple_try_stmt): New.
(c_parser_compound_statement): Call it.
for gcc/testsuite/ChangeLog
* gcc.dg/gimplefe-43.c: New.
From-SVN: r273443
Jonathan Wakely [Fri, 12 Jul 2019 11:43:22 +0000 (12:43 +0100)]
Define __type_identity_t alias and use for string_view
This defines the equivalent of C++2a's std::type_identity_t alias but
for use in C++11 and later. This can be used to replace __detail::__idt
in the string_view headers, which previously used common_type_t because
the one argument specialization of common_type_t was simply the identity
transform (which is no longer true).
* include/experimental/string_view (__detail::__idt): Remove.
(operator==, operator!=, operator<, operator>, operator<=, operator>=):
Use __type_identity_t instead of __detail::__idt;
* include/std/string_view (__detail::__idt): Remove.
(operator==, operator!=, operator<, operator>, operator<=, operator>=):
Use __type_identity_t instead of __detail::__idt;
* include/std/type_traits (__type_identity_t): New alias template.
From-SVN: r273442
Jonathan Wakely [Fri, 12 Jul 2019 11:43:17 +0000 (12:43 +0100)]
Update C++2a library status table
* doc/xml/manual/status_cxx2020.xml: Update status for atomic_ref
and floating point atomics.
From-SVN: r273441
Richard Sandiford [Fri, 12 Jul 2019 10:33:52 +0000 (10:33 +0000)]
Relax vector_builder::elt sanity check
I'd made it a precondition of vector_builder::elt that the encoding
must have been fully populated and that all implicit elements are
therefore defined. But for one of the AArch64 patches I'm working on,
it'd be convenient to be able to look back at previous elements while
building up the encoding. This patch therefore makes the assert
specific to implicit elements only.
2019-07-12 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* vector-builder.h (vector_builder::elt): Allow already-supplied
elements to be read back before building is complete.
From-SVN: r273440
Eric Botcazou [Fri, 12 Jul 2019 10:15:39 +0000 (10:15 +0000)]
re PR rtl-optimization/91136 (incorrect move of instruction to delay slot causes application crash in exception handling)
PR rtl-optimization/91136
* df-core.c (ACCESSING REFS): Fix typos in comment.
* resource.c (mark_target_live_reg): Add artificial defs that occur at
the beginning of the block to the initial set of live registers.
From-SVN: r273436
Richard Biener [Fri, 12 Jul 2019 10:03:10 +0000 (10:03 +0000)]
fold-const.h (get_array_ctor_element_at_index): Adjust.
2019-07-12 Richard Biener <rguenther@suse.de>
* fold-const.h (get_array_ctor_element_at_index): Adjust.
* fold-const.c (get_array_ctor_element_at_index): Add
ctor_idx output parameter informing the caller where in
the constructor the element was (not) found. Add early exit
for when the ctor is sorted.
* gimple-fold.c (fold_array_ctor_reference): Support constant
folding across multiple array elements.
* gcc.dg/tree-ssa/vector-7.c: New testcase.
From-SVN: r273435
Eric Botcazou [Fri, 12 Jul 2019 09:35:21 +0000 (09:35 +0000)]
cfgexpand.c (expand_gimple_stmt_1): If the statement doesn't have location...
* cfgexpand.c (expand_gimple_stmt_1) <GIMPLE_RETURN>: If the statement
doesn't have location, set the current location to the function's end
From-SVN: r273434
Richard Sandiford [Fri, 12 Jul 2019 08:14:34 +0000 (08:14 +0000)]
[arch64] Fix ambiguous .md attribute uses
This patch is part of a series that fixes ambiguous attribute
uses in .md files, i.e. cases in which attributes didn't use
<ITER:ATTR> to specify an iterator, and in which <ATTR> could
have different values depending on the iterator chosen.
No behavioural change except for dropping the unused SVE
divide permutations.
2019-07-12 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/aarch64/aarch64.md (*compare_condjump<mode>)
(loadwb_pair<GPI:mode>_<P:mode>, loadwb_pair<GPF:mode>_<P:mode>)
(storewb_pair<GPI:mode>_<P:mode>, storewb_pair<GPF:mode>_<P:mode>)
(*ands<mode>_compare0): Fix ambiguous uses of .md attributes.
* config/aarch64/aarch64-simd.md
(*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
(*aarch64_get_lane_zero_extend<GPI:mode><VDQQH:mode>): Likewise.
* config/aarch64/aarch64-sve.md
(while_ult<GPI:mode><PRED_ALL:mode>): Likewise.
(*cond_<optab><mode>_any): Fix SVE_I/SVE_SDI typo.
From-SVN: r273433
Richard Sandiford [Fri, 12 Jul 2019 07:54:23 +0000 (07:54 +0000)]
Support multiple operand counts for .md @ patterns
This patch extends the support for "@..." pattern names so that
the patterns can have different numbers of operands. This allows
things like binary and ternary operations to be handled in a
consistent way, a bit like optabs. The generators assert that
the number of operands passed is correct for the underlying
instruction.
Also, replace_operands_with_dups iterated over the old rtx format
even after having decided to do a replacement, which broke with
match_operator.
2019-07-12 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* doc/md.texi: Document that @ patterns can have different
numbers of operands.
* genemit.c (handle_overloaded_gen): Handle this case.
* genopinit.c (handle_overloaded_gen): Likewise.
* gensupport.c (replace_operands_with_dups): Iterate over
the new rtx's format rather than the old one's.
From-SVN: r273432
Jakub Jelinek [Fri, 12 Jul 2019 07:49:51 +0000 (09:49 +0200)]
tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_ORDER.
* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_ORDER.
* tree.c (omp_clause_num_ops, omp_clause_code_name): Add
order clause entries.
(walk_tree_1): Handle OMP_CLAUSE_ORDER.
* tree-pretty-print.c (dump_omp_clause): Likewise.
* gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses):
Likewise.
* omp-low.c (scan_sharing_clauses): Likewise.
* tree-nested.c (convert_nonlocal_omp_clauses,
convert_local_omp_clauses): Likewise.
c-family/
* c-pragma.h (enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_ORDER.
* c-omp.c (c_omp_split_clauses): Handle splitting of OMP_CLAUSE_ORDER.
c/
* c-parser.c (c_parser_omp_clause_name): Handle order clause.
(c_parser_omp_clause_order): New function.
(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_ORDER.
(OMP_SIMD_CLAUSE_MASK, OMP_FOR_CLAUSE_MASK): Add
PRAGMA_OMP_CLAUSE_ORDER.
* c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE_ORDER.
cp/
* parser.c (cp_parser_omp_clause_name): Handle order clause.
(cp_parser_omp_clause_order): New function.
(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_ORDER.
(OMP_SIMD_CLAUSE_MASK, OMP_FOR_CLAUSE_MASK): Add
PRAGMA_OMP_CLAUSE_ORDER.
* semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_ORDER.
* pt.c (tsubst_omp_clauses): Likewise.
testsuite/
* c-c++-common/gomp/order-1.c: New test.
* c-c++-common/gomp/order-2.c: New test.
From-SVN: r273431
Kewen Lin [Fri, 12 Jul 2019 05:07:35 +0000 (05:07 +0000)]
Add hint if the fallthrough target of current BB isn't the one
placed closely next.
2019-07-12 Kewen Lin <linkw@gcc.gnu.org>
* gcc/cfgrtl.c (print_rtl_with_bb): Emit a hint if the
fallthrough target of current basic block isn't the placed
right next.
From-SVN: r273430
GCC Administrator [Fri, 12 Jul 2019 00:16:23 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r273429
Ian Lance Taylor [Thu, 11 Jul 2019 21:37:33 +0000 (21:37 +0000)]
compiler: ensure evaluation order in type hash/eq functions
The type hash and equality functions are generated after the
order_evaluations pass. They may contain shortcut operators and
Set_and_use_temporary_expressions (e.g. from lowering a
Binary_exprssion) that need to be ordered. Run order_evaluations
and remove_shortcuts on these functions. (The hash functions
may be fine, but to be on the safe side we run on them anyway.
We do need to run on the equality functions.)
A Set_and_use_temporary_expression is effectively an assignment,
so it needs to be ordered. Otherwise if we insert a temporary
statement before it, we may get wrong evaluation order.
A test case is CL 185818.
Fixes golang/go#33062.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/185817
From-SVN: r273425
Uros Bizjak [Thu, 11 Jul 2019 21:01:25 +0000 (23:01 +0200)]
ChangeLog: Fix whitespace.
* ChangeLog: Fix whitespace.
* testsuite/ChangeLog: Ditto.
From-SVN: r273424
Jonathan Wakely [Thu, 11 Jul 2019 19:43:32 +0000 (20:43 +0100)]
Improve docs for --enable-libstdcxx-time=rt
* doc/xml/manual/configure.xml: Improve documentation of
--enable-libstdcxx-time option.
From-SVN: r273421
Jonathan Wakely [Thu, 11 Jul 2019 19:43:25 +0000 (20:43 +0100)]
Define std::atomic_ref and std::atomic<floating-point> for C++20
This adds the new atomic types from C++2a, as proposed by P0019 and
P0020. To reduce duplication the calls to the compiler's atomic
built-ins are wrapped in new functions in the __atomic_impl namespace.
These functions are currently only used by std::atomic<floating-point>
and std::atomic_ref but could also be used for all other specializations
of std::atomic.
* include/bits/atomic_base.h (__atomic_impl): New namespace for
wrappers around atomic built-ins.
(__atomic_float, __atomic_ref): New class templates for use as base
classes.
* include/std/atomic (atomic<float>, atomic<double>)
(atomic<long double>): New explicit specializations.
(atomic_ref): New class template.
(__cpp_lib_atomic_ref): Define.
* include/std/version (__cpp_lib_atomic_ref): Define.
* testsuite/29_atomics/atomic/60695.cc: Adjust dg-error.
* testsuite/29_atomics/atomic_float/1.cc: New test.
* testsuite/29_atomics/atomic_float/requirements.cc: New test.
* testsuite/29_atomics/atomic_ref/deduction.cc: New test.
* testsuite/29_atomics/atomic_ref/float.cc: New test.
* testsuite/29_atomics/atomic_ref/generic.cc: New test.
* testsuite/29_atomics/atomic_ref/integral.cc: New test.
* testsuite/29_atomics/atomic_ref/pointer.cc: New test.
* testsuite/29_atomics/atomic_ref/requirements.cc: New test.
From-SVN: r273420
Sunil K Pandey [Thu, 11 Jul 2019 19:09:37 +0000 (19:09 +0000)]
i386: Add AVX512 unaligned intrinsics
__m512i _mm512_loadu_epi64( void * sa);
void _mm512_storeu_epi64(void * d, __m512i a);
__m512i _mm512_loadu_epi32( void * sa);
void _mm512_storeu_epi32(void * d, __m512i a);
void _mm256_storeu_epi64(void * d, __m256i a);
void _mm_storeu_epi64(void * d, __m128i a);
void _mm256_storeu_epi32(void * d, __m256i a);
void _mm_storeu_epi32(void * d, __m128i a);
Tested on x86-64.
2019-07-11 Sunil K Pandey <sunil.k.pandey@intel.com>
gcc/
PR target/90980
* config/i386/avx512fintrin.h (_mm512_loadu_epi64): New.
(_mm512_storeu_epi64): Likewise.
(_mm512_loadu_epi32): Likewise.
(_mm512_storeu_epi32): Likewise.
* config/i386/avx512vlintrin.h (_mm256_storeu_epi64): New.
(_mm_storeu_epi64): Likewise.
(_mm256_storeu_epi32): Likewise.
(_mm_storeu_epi32): Likewise.
gcc/testsuite/
PR target/90980
* gcc.target/i386/pr90980-1.c: New test.
* gcc.target/i386/pr90980-2.c: Likewise.
* gcc.target/i386/pr90980-3.c: Likewise.
From-SVN: r273416
Segher Boessenkool [Thu, 11 Jul 2019 18:51:23 +0000 (20:51 +0200)]
rs6000: Adjust comment for the Modula-2 traceback lang
* config/rs6000/rs6000-logue.c: Add Modula-2 to comment.
From-SVN: r273413
Segher Boessenkool [Thu, 11 Jul 2019 18:36:48 +0000 (20:36 +0200)]
rs6000: Handle Modula-2 in the traceback table
This patch recognises Modula-2 as language for the traceback table,
fixing the problem shown in
https://gcc.gnu.org/ml/gcc-patches/2019-07/msg00848.html .
* config/rs6000/rs6000-logue.c (rs6000_output_function_epilogue):
Handle Modula-2.
From-SVN: r273411
Jakub Jelinek [Thu, 11 Jul 2019 08:31:51 +0000 (10:31 +0200)]
re PR target/91124 (gcc.target/i386/avx512vl-vpshldvd-2.c etc. FAIL)
PR target/91124
* config/i386/sse.md (sse2_cvtpd2dq<mask_name>): Change into ...
(sse2_cvtpd2dq): ... this. Remove mask substitution macros.
(sse2_cvtpd2dq_mask, sse2_cvtpd2dq_mask_1): New define_insns.
(ufix_notruncv2dfv2si2<mask_name>): Change into ...
(ufix_notruncv2dfv2si2): ... this. Remove mask substitution macros.
(ufix_notruncv2dfv2si2_mask, ufix_notruncv2dfv2si2_mask_1): New
define_insns.
(ufix_truncv2dfv2si2<mask_name>): Change into ...
(ufix_truncv2dfv2si2): ... this. Remove mask substitution macros.
(ufix_truncv2dfv2si2_mask, ufix_truncv2dfv2si2_mask_1): New
define_insns.
(sse2_cvttpd2dq<mask_name>): Change into ...
(sse2_cvttpd2dq): ... this. Remove mask substitution macros.
(sse2_cvttpd2dq_mask, sse2_cvttpd2dq_mask_1): New define_insns.
(*sse2_cvtpd2dq<mask_name>): Change into ...
(*sse2_cvtpd2dq): ... this. Remove mask substitution macros.
Add "C" constraint to const0_operand.
(*sse2_cvtpd2dq_mask, *sse2_cvtpd2dq_mask_1): New define_insns.
(sse2_cvtpd2ps_mask): Adjust expand to match *sse2_cvtpd2ps_mask
changes.
From-SVN: r273409
Jakub Jelinek [Thu, 11 Jul 2019 08:31:19 +0000 (10:31 +0200)]
re PR target/91124 (gcc.target/i386/avx512vl-vpshldvd-2.c etc. FAIL)
PR target/91124
* config/i386/i386-builtin-types.def
(V32HI_FTYPE_V32HI_V32HI_V32HI_INT,
V16HI_FTYPE_V16HI_V16HI_V16HI_INT, V8HI_FTYPE_V8HI_V8HI_V8HI_INT,
V8SI_FTYPE_V8SI_V8SI_V8SI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
V2DI_FTYPE_V2DI_V2DI_V2DI_INT, V4SI_FTYPE_V4SI_V4SI_V4SI_INT): Remove.
* config/i386/i386-builtin.def (__builtin_ia32_vpshrdv_v32hi_mask,
__builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshrdv_v16hi_mask,
__builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi_mask,
__builtin_ia32_vpshrdv_v8hi_maskz, __builtin_ia32_vpshrdv_v16si_mask,
__builtin_ia32_vpshrdv_v16si_maskz, __builtin_ia32_vpshrdv_v8si_mask,
__builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si_mask,
__builtin_ia32_vpshrdv_v4si_maskz, __builtin_ia32_vpshrdv_v8di_mask,
__builtin_ia32_vpshrdv_v8di_maskz, __builtin_ia32_vpshrdv_v4di_mask,
__builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di_mask,
__builtin_ia32_vpshrdv_v2di_maskz, __builtin_ia32_vpshldv_v32hi_mask,
__builtin_ia32_vpshldv_v32hi_maskz, __builtin_ia32_vpshldv_v16hi_mask,
__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi_mask,
__builtin_ia32_vpshldv_v8hi_maskz, __builtin_ia32_vpshldv_v16si_mask,
__builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si_mask,
__builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si_mask,
__builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di_mask,
__builtin_ia32_vpshldv_v8di_maskz, __builtin_ia32_vpshldv_v4di_mask,
__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di_mask,
__builtin_ia32_vpshldv_v2di_maskz, __builtin_ia32_vpdpbusd_v16si_mask,
__builtin_ia32_vpdpbusd_v16si_maskz, __builtin_ia32_vpdpbusd_v8si_mask,
__builtin_ia32_vpdpbusd_v8si_maskz, __builtin_ia32_vpdpbusd_v4si_mask,
__builtin_ia32_vpdpbusd_v4si_maskz,
__builtin_ia32_vpdpbusds_v16si_mask,
__builtin_ia32_vpdpbusds_v16si_maskz,
__builtin_ia32_vpdpbusds_v8si_mask,
__builtin_ia32_vpdpbusds_v8si_maskz,
__builtin_ia32_vpdpbusds_v4si_mask,
__builtin_ia32_vpdpbusds_v4si_maskz,
__builtin_ia32_vpdpwssd_v16si_mask,
__builtin_ia32_vpdpwssd_v16si_maskz, __builtin_ia32_vpdpwssd_v8si_mask,
__builtin_ia32_vpdpwssd_v8si_maskz, __builtin_ia32_vpdpwssd_v4si_mask,
__builtin_ia32_vpdpwssd_v4si_maskz,
__builtin_ia32_vpdpwssds_v16si_mask,
__builtin_ia32_vpdpwssds_v16si_maskz,
__builtin_ia32_vpdpwssds_v8si_mask,
__builtin_ia32_vpdpwssds_v8si_maskz,
__builtin_ia32_vpdpwssds_v4si_mask,
__builtin_ia32_vpdpwssds_v4si_maskz): Use *_USI, *_UHI or *_UQI
suffixed types rather than *_INT.
* config/i386/i386-expand.c (ix86_expand_args_builtin): Don't handle
V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
V4DI_FTYPE_V4DI_V4DI_V4DI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI_INT,
V16SI_FTYPE_V16SI_V16SI_V16SI_INT, V2DI_FTYPE_V2DI_V2DI_V2DI_INT
and V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
From-SVN: r273408
Piotr Trojanek [Thu, 11 Jul 2019 08:03:33 +0000 (08:03 +0000)]
[Ada] Use high-level wrappers for Lib.Units.Table
2019-07-11 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* lib-writ.adb (Ensure_System_Dependency,
Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
to table with a high-level query.
From-SVN: r273407
Piotr Trojanek [Thu, 11 Jul 2019 08:03:28 +0000 (08:03 +0000)]
[Ada] Minor refactoring
2019-07-11 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* checks.adb: Fix typo in comment.
* sem.adb (Semantics): Avoid repeated calls to
In_Extended_Main_Source_Unit by reusing an already-cached
result.
* sem_util.adb (First_Global): Fix style.
From-SVN: r273406
Yannick Moy [Thu, 11 Jul 2019 08:03:24 +0000 (08:03 +0000)]
[Ada] Avoid spurious errors on dimensionality checking in GNATprove
In the special GNATprove mode of the frontend, automatic inlining is
performed, which may lead to spurious errors on dimensionality checking.
Avoid performing this checking on inlined code, which has already been
checked for dimensionality errors.
There is no impact on compilation.
2019-07-11 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Call): Do not perform dimensionality
checking on inlined bodies.
From-SVN: r273405
Yannick Moy [Thu, 11 Jul 2019 08:03:19 +0000 (08:03 +0000)]
[Ada] Flip the meaning of debug switch -gnatdF
2019-07-11 Yannick Moy <moy@adacore.com>
gcc/ada/
* debug.adb: Flip meaning of debug switch -gnatdF.
From-SVN: r273404
Yannick Moy [Thu, 11 Jul 2019 08:03:14 +0000 (08:03 +0000)]
[Ada] Avoid spurious warning on assertions with Loop_Entry
When the Loop_Entry attribute is used inside a loop invariant or another
assertion where it is allowed, it may lead to spurious warnings on
conditions that are detected to be always valid. Now fixed.
2019-07-11 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_eval.adb (Is_Same_Value): Add special case for rewritten
Loop_Entry attribute.
gcc/testsuite/
* gnat.dg/loop_entry1.adb: New testcase.
From-SVN: r273403
Claire Dross [Thu, 11 Jul 2019 08:03:09 +0000 (08:03 +0000)]
[Ada] Refactor ownership pointer checking in SPARK as a generic
Ownership checking as done in SPARK should be applied only to SPARK
code, which requires GNATprove knowledge of the SPARK_Mode boundary.
Transform the checking unit into a generic to allow passing in the
knowledge from GNATprove to that unit in GNAT sources.
Keeping the code in GNAT sources makes it possible in the future to
adapt it further (or simply instantiate it differently) to be used on
Ada code, independently of GNATprove.
There is no impact on compilation.
2019-07-11 Claire Dross <dross@adacore.com>
gcc/ada/
* gnat1drv.adb: SPARK checking rules for pointer aliasing are
moved to GNATprove backend.
* sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
unit. Takes as parameters:
- Retysp which is used to query the most underlying type
visible in SPARK. We do not introduce aliasing checks for
types which are not visibly deep.
- Component_Is_Visible_In_SPARK is used to avoid doing pointer
aliasing checks on components which are not visible in SPARK.
- Emit_Messages returns True in the second phase of SPARK
analysis. Error messages for failed aliasing checks are only
output in this case.
Additionally, errors on constructs not supported in SPARK are
removed as duplicates of marking errors. Components are stored
in the permission map using their original component to avoid
inconsistencies between components of different views of the
same type.
(Check_Expression): Handle delta constraints.
(Is_Deep): Exported so that we can check for SPARK restrictions
on deep types inside SPARK semantic checkings.
(Is_Traversal_Function): Exported so that we can check for SPARK
restrictions on traversal functions inside SPARK semantic
checkings.
(Check_Call_Statement, Read_Indexes): Check wether we are
dealing with a subprogram pointer type before querying called
entity.
(Is_Subpath_Expression): Image attribute can appear inside a
path.
(Check_Loop_Statement): Correct order of statements in the loop.
(Check_Node): Ignore raise nodes.
(Check_Statement): Use Last_Non_Pragma to get the object
declaration in an extended return statement.
From-SVN: r273402
Patrick Bernardi [Thu, 11 Jul 2019 08:03:04 +0000 (08:03 +0000)]
[Ada] Minimal binder
The new minimal binder option ("-minimal") suppresses the generation of
binder objects that are not strictly required for program operation.
This option is suitable for space constrained applications and comes
with the restriction that programs can no longer be debugged using GDB.
2019-07-11 Patrick Bernardi <bernardi@adacore.com>
gcc/ada/
* bindgen.adb (Gen_Main): Do not generate a reference to
Ada_Main_Program_Name when the Minimal_Binder flag is set.
(Gen_Output_File_Ada): Do not output GNAT_Version and
Ada_Main_Program_Name info if Minimal_Binder flag is set.
* bindusg.adb: Add documentation for new -minimal switch.
* gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
* opt.ads: Add new global flag Minimal_Binder to indicate if the
binder should not produce global variables.
* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
Update documentation with new binder -minimal switch.
* gnat_ugn.texi: Regenerate.
From-SVN: r273401
Eric Botcazou [Thu, 11 Jul 2019 08:02:58 +0000 (08:02 +0000)]
[Ada] Makefile.rtl: add a warning about compilation flags
2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* Makefile.rtl: Add warning note about compilation flags and
capitalize.
From-SVN: r273400
Ed Schonberg [Thu, 11 Jul 2019 08:02:53 +0000 (08:02 +0000)]
[Ada] Crash on protected type with self-referential component
This patch fixes a compiler abort on a declarastion for a protected type
PT when one of its private component is of type access PT.
2019-07-11 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
subsidiary routine Replace_Access_Definition, to handle properly
a protected type PT one of whose private components is of type
access PT.
gcc/testsuite/
* gnat.dg/prot8.adb, gnat.dg/prot8.ads: New testcase.
From-SVN: r273399
Dmitriy Anisimkov [Thu, 11 Jul 2019 08:02:49 +0000 (08:02 +0000)]
[Ada] GNAT.Sockets: support ICMP, IGMP and RAW IP protocol levels
2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* libgnat/g-socket.ads (Level_Type): Add enumerators for
IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
IP_Protocol_For_RAW_Level.
* libgnat/g-socket.adb (Levels): Handle them.
* s-oscons-tmplt.c: Import socket protocols defined in
netinet/in.h.
From-SVN: r273398
Claire Dross [Thu, 11 Jul 2019 08:02:44 +0000 (08:02 +0000)]
[Ada] Memory corruption when using formal hashed sets or maps
Add a check to avoid causing a buffer overflow when the map is empty
2019-07-11 Claire Dross <dross@adacore.com>
gcc/ada/
* libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
reset the Has_Element flag if no element is freed.
From-SVN: r273397
Arnaud Charlet [Thu, 11 Jul 2019 08:02:40 +0000 (08:02 +0000)]
[Ada] errno.c: remove obsolete support for MaRTE OS
2019-07-11 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* errno.c: Remove obsolete support for MaRTE OS.
From-SVN: r273396
Ed Schonberg [Thu, 11 Jul 2019 08:02:35 +0000 (08:02 +0000)]
[Ada] Remove redundant predicate checks
This patch removes redundant dynamic predicate checks generated by type
conversions in various contexts. The patch also recognizes additional
such checks that can be evaluated statically when applied to constant
values.
No simple test available.
2019-07-11 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
is generated, analyze it with range check suppressed, because
that check has been previously applied.
* exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
type conversion to the type of the LHS, do not apply a predicate
check to the RHS because it will have been generated already
during its expansion.
* exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
handle a predicate check on a constant entity whose value is
static.
From-SVN: r273395
Hristian Kirtchev [Thu, 11 Jul 2019 08:02:30 +0000 (08:02 +0000)]
[Ada] Elaboration order v4.0 and output of dependencies
This patch adds a missing case to the mechanism that outputs the
elaboration order dependencies of units.
------------
-- Source --
------------
-- pack.ads
package Pack is
procedure Force_Body;
end Pack;
-- pack.adb
package body Pack is
procedure Force_Body is null;
end Pack;
-- main.adb
with Pack;
procedure Main is begin null; end Main;
----------------------------
-- Compilation and output --
----------------------------
$ gnatmake -q main.adb -bargs -e
ELABORATION ORDER DEPENDENCIES
unit "pack (spec)" must be elaborated before unit "main (body)"
reason: unit "main (body)" has with clause for unit "pack (spec)"
unit "pack (spec)" must be elaborated before unit "pack (body)"
reason: spec must be elaborated before body
2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* bindo.adb: Remove the documentation of switch -d_N because it
is no longer in use.
* bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
New routine.
* bindo-writers.adb (Write_Dependency_Edge): Add the missing
case of a spec-before-body edge.
From-SVN: r273394
Dmitriy Anisimkov [Thu, 11 Jul 2019 08:02:26 +0000 (08:02 +0000)]
[Ada] GNAT.Sockets: add support for RAW sockets
2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
* libgnat/g-socket.adb (Modes): Handle Socket_Raw.
From-SVN: r273393
Justin Squirek [Thu, 11 Jul 2019 08:02:21 +0000 (08:02 +0000)]
[Ada] Pragma Unreferenced triggers undefined reference
This patch corrects the generation of protected body declarations so
that instances of pragma Unreferenced applied to formals don't falsly
trigger undefined references.
2019-07-11 Justin Squirek <squirek@adacore.com>
gcc/ada/
* exp_ch9.adb (Build_Private_Protected_Declaration): Add
exception for the moving of pragmas to internally generated
specs for pragma Unreferenced.
gcc/testsuite/
* gnat.dg/unreferenced2.adb: New testcase.
From-SVN: r273392
Bob Duff [Thu, 11 Jul 2019 08:02:17 +0000 (08:02 +0000)]
[Ada] Fix inconsistent documentation for gnatmetric
One part said all metrics are enabled by default (which is now true),
and another part said the coupling metrics are disabled by default
(which is no longer true).
2019-07-11 Bob Duff <duff@adacore.com>
gcc/ada/
* doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
documentation for gnatmetric.
* gnat_ugn.texi: Regenerate.
From-SVN: r273391
Bob Duff [Thu, 11 Jul 2019 08:02:12 +0000 (08:02 +0000)]
[Ada] Document gnatpp's --spaces-only switch
2019-07-11 Bob Duff <duff@adacore.com>
gcc/ada/
* doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
--spaces-only switch.
From-SVN: r273390
Hristian Kirtchev [Thu, 11 Jul 2019 08:02:07 +0000 (08:02 +0000)]
[Ada] Infinite loop on illegal declaration
This patch updates predicate Null_Status to prevent an infinite
recursion when the argument is an illegal object declaration of an
access type.
2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* sem_util.adb (Null_Status): Assume that an erroneous construct
has an undefined null status.
gcc/testsuite/
* gnat.dg/self_ref1.adb: New testcase.
From-SVN: r273389
Hristian Kirtchev [Thu, 11 Jul 2019 08:02:03 +0000 (08:02 +0000)]
[Ada] Minor reformatting
2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.
From-SVN: r273388
Hristian Kirtchev [Thu, 11 Jul 2019 08:01:58 +0000 (08:01 +0000)]
[Ada] Internal crash on illegal renaming
This patch updates the retrieval of the renamed object name of an object
renaming declaration to handle various name forms.
No need for a test because one already exists, and reproducing requires
a compiler built with assertions.
2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
renamed using routine Get_Object_Name which takes care of
various name forms.
(Get_Object_Name): New routine.
From-SVN: r273387
Ed Schonberg [Thu, 11 Jul 2019 08:01:54 +0000 (08:01 +0000)]
[Ada] Compile-time evaluation of predicate checks
This patch recognizes case of dynamic predicates on integer subtypes
that are simple enough to be evaluated statically when the argument is
itself a literal. Even though in many cases such predicate checks will
be removed by the back-end with any level of optimization, it is
preferable to perform this constant folding in the front-end, wich also
cleans up the output of CCG, as well as producing explicit warnings when
the test will fail.
2019-07-11 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_ch6.adb (Can_Fold_Predicate_Call): New function,
subsidiary of Expand_Call_Helper, to compute statically a
predicate check when the argument is a static integer.
gcc/testsuite/
* gnat.dg/predicate11.adb: New testcase.
From-SVN: r273386
Hristian Kirtchev [Thu, 11 Jul 2019 08:01:49 +0000 (08:01 +0000)]
[Ada] Link error due to negated intrinsic comparison
This patch corrects the resolution of operator "not" when the expression
being negated is an equality operator to prevent the transformation of
an intrinsic equality operator into a function call.
2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
operator into a function call when the operator is intrinsic.
gcc/testsuite/
* gnat.dg/equal9.adb: New testcase.
From-SVN: r273385
Thomas Quinot [Thu, 11 Jul 2019 08:01:44 +0000 (08:01 +0000)]
[Ada] Fix crash on dynamic predicate when generating SCOs
A pragma Check for Dynamic_Predicate does not correspond to any source
construct that has a provisionally-disabled SCO.
2019-07-11 Thomas Quinot <quinot@adacore.com>
gcc/ada/
* sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
Set_SCO_Pragma_Enabled for the dynamic predicate case.
gcc/testsuite/
* gnat.dg/scos1.adb: New testcase.
From-SVN: r273384
Hristian Kirtchev [Thu, 11 Jul 2019 08:01:39 +0000 (08:01 +0000)]
[Ada] Missing finalization of private protected type
This patch updates the analysis of protected types to properly mark the
type as having controlled components when it contains at least one such
component. This in turn marks a potential partial view as requiring
finalization actions.
------------
-- Source --
------------
-- types.ads
with Ada.Finalization; use Ada.Finalization;
package Types is
type Ctrl_Typ is new Controlled with null record;
procedure Finalize (Obj : in out Ctrl_Typ);
type Prot_Typ is limited private;
private
protected type Prot_Typ is
private
Comp : Ctrl_Typ;
end Prot_Typ;
end Types;
-- types.adb
with Ada.Text_IO; use Ada.Text_IO;
package body Types is
procedure Finalize (Obj : in out Ctrl_Typ) is
begin
Put_Line ("finalize");
end Finalize;
protected body Prot_Typ is
end Prot_Typ;
end Types;
-- main.adb
with Types; use Types;
procedure Main is
Obj : Prot_Typ;
begin
null;
end Main;
2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* exp_util.ads, exp_util.adb (Needs_Finalization): Move to
Sem_Util.
* sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
the protected type as having controlled components when it
contains at least one such component.
* sem_util.ads, sem_util.adb (Needs_Finalization): New
function.
From-SVN: r273383
Eric Botcazou [Thu, 11 Jul 2019 08:01:35 +0000 (08:01 +0000)]
[Ada] New Repinfo.Input unit to read back JSON representation info.
For some time the Repinfo unit has been able to output the
representation information in the JSON data interchange format in
addition to the usual text and binary formats.
The new Repinfo.Input unit makes it possible to read back this
information under this format and make it available to clients, the main
one being ASIS.
The big advantage of using this approach over manipulating a binary blob
is that the writer and the reader of the JSON representation need not be
binary compatible, i.e. in practice need not be the same version of the
compiler or ASIS for the same target.
The patch also adds a -gnatd_j switch to read back the information in
the compiler itself, which makes it easy to keep the writer and the
reader in sync using only one tool, namely the compiler. The typical
usage is:
gcc -c p.ads -gnatR4js
gcc -c p.ads -gnatd_j
to exercise respectively the writer and the reader from the compiler.
2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* alloc.ads (Rep_JSON_Table_Initial): New constant.
(Rep_JSON_Table_Increment): Likewise.
* debug.adb: Document -gnatd_j switch.
* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
repinfo-input.o.
* gnat1drv.adb: Add with clause for Repinfo.Input.
Add with and use clauses for Sinput.
(Read_JSON_Files_For_Repinfo): New procedure.
(Gnat1drv1): Deal with -gnatd_j switch.
* repinfo-input.ad[sb]: New unit.
* snames.ads-tmpl (Name_Discriminant): New constant.
(Name_Operands): Likewise.
From-SVN: r273382
Justin Squirek [Thu, 11 Jul 2019 08:01:30 +0000 (08:01 +0000)]
[Ada] No warning for guaranteed accessibility check failures
This patch corrects the generation of dynamic accessibility checks which
are guaranteed to trigger errors during run time so as to give the user
proper warning during unit compiliation.
2019-07-11 Justin Squirek <squirek@adacore.com>
gcc/ada/
* checks.adb (Apply_Accessibility_Check): Add check for constant
folded conditions on accessibility checks.
gcc/testsuite/
* gnat.dg/access7.adb: New testcase.
From-SVN: r273381
Arnaud Charlet [Thu, 11 Jul 2019 08:01:25 +0000 (08:01 +0000)]
[Ada] GNAT.Threads: Add a Get_Thread overload taking a Task_Id
2019-07-11 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
Update comments. Add new version taking a Task_Id.
From-SVN: r273380
Hristian Kirtchev [Thu, 11 Jul 2019 08:01:21 +0000 (08:01 +0000)]
[Ada] Elaboration order v4.0 and infinite loops
This patch introduces binder switch -d_S which prompts the various
phases of the elaboration order mechanism to output a short message
concerning their commencement and completion. The output is useful when
trying to determine whether a phase is stuck in an infinite loop.
------------
-- Source --
------------
-- main.adb
procedure Main is begin null; end Main;
----------------------------
-- Compilation and output --
----------------------------
$ gnatmake -q main.adb -bargs -d_S -d_V
elaborating units...
collecting units...
units collected.
constructing library graph...
validating library graph...
library graph validated.
library graph constructed.
constructing invocation graph...
validating invocation graph...
invocation graph validated.
invocation graph constructed.
augmenting library graph...
library graph augmented.
discovering components...
components discovered.
validating elaboration order...
elaboration order validated.
units elaborated.
2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* bindo.adb: Update the section of switches and debugging
elaboration issues.
* bindo.ads: Add type Elaboration_Phase.
* bindo-augmentors.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Augment_Library_Graph): Signal the start and end of the
aubmentation phase.
* bindo-builders.adb: Add with and use clause for Bindo.Writers.
Add use clause for Bindo.Writers.Phase_Writers.
(Build_Invocation_Graph): Signal the start and end of the
invocation graph construction phase.
(Build_Library_Graph): Signal the start and end of the library
graph construction phase.
* bindo-diagnostics.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Diagnose_Cycle): Signal the start and end of the cycle
diagnostic phase.
* bindo-elaborators.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Elaborate_Units): Signal the start and end of the unit
elaboration phase.
* bindo-graphs.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Find_Components): Signal the start and end of the component
discovery phase.
(Find_Cycles): Signal the start and end of the cycle discovery
phase.
* bindo-units.adb: Add with and use clause for Bindo.Writers.
Add use clause for Bindo.Writers.Phase_Writers.
(Collect_Elaborable_Units): Signal the start and end of the unit
collection phase.
* bindo-validators.adb: Add with and use clause for
Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers.
(Validate_Cycles, Validate_Elaboration_Order,
Validate_Invocation_Graph, Validate_Library_Graph): Signal the
start and end of the libray graph validation phase.
* bindo-writers.ads, bindo-writers.adb: Add new nested package
Phase_Writers.
* debug.adb: Update the documentation of switch d_S.
From-SVN: r273379
Yannick Moy [Thu, 11 Jul 2019 08:01:07 +0000 (08:01 +0000)]
[Ada] Avoid spurious warning on wrong order of operator call arguments
GNAT issues a warning under -gnatwa when actuals for a call are named
like the formals, but in a different order. This is inappropriate for
calls to operators in infix form, when e.g. Right <= Left is in general
the intended order. Special case calls to operators to avoid that
spurious warning.
2019-07-11 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_res.adb (Check_Argument_Order): Special case calls to
operators.
gcc/testsuite/
* gnat.dg/warn21.adb, gnat.dg/warn21.ads: New testcase.
From-SVN: r273378
Aldy Hernandez [Thu, 11 Jul 2019 07:50:58 +0000 (07:50 +0000)]
Do not try to further refine a VR_UNDEFINED result when intersecting
value_ranges.
From-SVN: r273377
Richard Biener [Thu, 11 Jul 2019 07:32:04 +0000 (07:32 +0000)]
re PR middle-end/91131 (Bad bitfield coalescing)
2019-07-11 Richard Biener <rguenther@suse.de>
PR middle-end/91131
* gimplify.c (gimplify_compound_literal_expr): Force a temporary
when the object is volatile and we have not cleared it even though
there are no nonzero elements.
* gcc.target/i386/pr91131.c: New testcase.
From-SVN: r273376
GCC Administrator [Thu, 11 Jul 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r273375
Michael Meissner [Wed, 10 Jul 2019 19:34:03 +0000 (19:34 +0000)]
predicates.md (cint34_operand): Update SIGNED_34BIT_OFFSET_P call.
2019-07-10 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/predicates.md (cint34_operand): Update
SIGNED_34BIT_OFFSET_P call.
(pcrel_address): Update SIGNED_34BIT_OFFSET_P call.
(pcrel_external_address): Update SIGNED_34BIT_OFFSET_P call.
* config/rs6000/rs6000.c (rs6000_prefixed_address): Update
SIGNED_16BIT_OFFSET_P and SIGNED_34BIT_OFFSET_P calls.
* config/rs6000/rs6000.h (SIGNED_16BIT_OFFSET_P): Remove EXTRA
argument.
(SIGNED_34BIT_OFFSET_P): Remove EXTRA argument.
(SIGNED_16BIT_OFFSET_EXTRA_P): New macro, like
SIGNED_16BIT_OFFSET_P with an EXTRA argument.
(SIGNED_34BIT_OFFSET_EXTRA_P): New macro, like
SIGNED_34BIT_OFFSET_P with an EXTRA argument.
From-SVN: r273370
Iain Sandoe [Wed, 10 Jul 2019 19:29:56 +0000 (19:29 +0000)]
[Darwin, PPC] Collate the system library spec into one expression.
There's no need to redefine this dependent on the target header (that only
works in the case that we have self-hosting which is less and less likely
for the older system versions).
Actually, what we need is for the correct library set to be used based
on the SDK(s) that can target the chosen system.
gcc/ChangeLog:
2019-07-10 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/darwin.h (LIB_SPEC): Collate this spec here.
* config/rs6000/darwin7.h (LIB_SPEC): Remove.
* config/rs6000/darwin8.h (LIB_SPEC): Remove.
(DEF_MIN_OSX_VERSION): New.
From-SVN: r273369
Richard Sandiford [Wed, 10 Jul 2019 18:41:51 +0000 (18:41 +0000)]
Fix folding of vector EQ/NE
For vector1 != vector2, we returned false if any elements were equal,
rather than if all elements were equal.
2019-07-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* fold-const.c (fold_relational_const): Fix folding of
vector-to-scalar NE_EXPRs.
(test_vector_folding): Add more tests.
From-SVN: r273366
Richard Sandiford [Wed, 10 Jul 2019 18:41:44 +0000 (18:41 +0000)]
[arm] Fix BE index for single-var vector initialisers (PR91060)
If a vector constructor has a single nonconstant element,
neon_expand_vector_init loads the constant lanes and then inserts the
nonconstant value. The problem was that it was doing the insertion
using the arm_neon.h neon_vset_lane<mode> patterns, which use
architectural lane numbering rather than GCC lane numbering.
2019-07-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR target/91060
* config/arm/iterators.md (V2DI_ONLY): New mode iterator.
* config/arm/neon.md (vec_set<mode>_internal): Add a '@' prefix.
(vec_setv2di_internal): Reexpress as...
(@vec_set<V2DI_ONLY:mode>_internal): ...this.
* config/arm/arm.c (neon_expand_vector_init): Use gen_vec_set_internal
rather than gen_neon_vset_lane<mode>.
From-SVN: r273365
Ian Lance Taylor [Wed, 10 Jul 2019 18:12:54 +0000 (18:12 +0000)]
compiler: finalize methods when importing types
This patch changes the compiler to be more aggressive about finalizing
methods on imported types, to avoid problems with interface types that
are imported but remain unreachable until a later stage in the compilation.
The normal pattern prior to this change was that the import process would
leave imported interface types alone, and rely on Gogo::finalize_methods
to locate and finalize all interface types at a later point. This way
of doing things was not working in all cases due to the fact that we can
import an interface type that is only reachable from the body of an
inlinable function, meaning that we can't "find" the type during
the methods finalize phase.
The importer's Import::read_types() now makes a pass over all imported
types to finalize methods on any newly imported type, which takes care
of the issue.
New test case for this problem in CL 185517.
Fixes golang/go#33013
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/185518
From-SVN: r273364
Ian Lance Taylor [Wed, 10 Jul 2019 17:56:40 +0000 (17:56 +0000)]
compiler: add break label in 1,2-case select statement lowering
CL 184998 added optimizations for one- and two-case select
statements. But it didn't handle break statement in the select
case correctly. Specifically, it didn't add the label definition,
so it could result in a dangling goto. This CL fixes this, by
adding the label definition.
A test case is CL 185520.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/185519
From-SVN: r273359
Martin Sebor [Wed, 10 Jul 2019 16:15:52 +0000 (16:15 +0000)]
PR testsuite/91132 - test gcc.dg/strlenopt-67.c in r273317 fails
gcc/testsuite/ChangeLog:
* gcc.dg/strlenopt-67.c: Removed second copy of test.
From-SVN: r273358
Vladimir Makarov [Wed, 10 Jul 2019 16:07:10 +0000 (16:07 +0000)]
re PR target/91102 (aarch64 ICE on Linux kernel with -Os starting with r270266)
2019-07-10 Vladimir Makarov <vmakarov@redhat.com>
PR target/91102
* lra-constraints.c (process_alt_operands): Don't match user
defined regs only if they are early clobbers.
2019-07-10 Vladimir Makarov <vmakarov@redhat.com>
PR target/91102
* gcc.target/aarch64/pr91102.c: New test.
From-SVN: r273357
Marc Glisse [Wed, 10 Jul 2019 15:16:12 +0000 (17:16 +0200)]
Fix wi::lshift
2019-07-10 Marc Glisse <marc.glisse@inria.fr>
* wide-int.h (wi::lshift): Reject negative values for the fast path.
From-SVN: r273356
Richard Biener [Wed, 10 Jul 2019 13:40:12 +0000 (13:40 +0000)]
re PR tree-optimization/91126 (Incorrect constant propagation of BIT_FIELD_REF)
2019-07-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/91126
* tree-ssa-sccvn.c (n_walk_cb_data::push_partial_def): Adjust
native encoding offset for BYTES_BIG_ENDIAN.
(vn_reference_lookup_3): Likewise.
* gcc.dg/torture/pr91126.c: New testcase.
From-SVN: r273355
Richard Biener [Wed, 10 Jul 2019 13:24:32 +0000 (13:24 +0000)]
gimple-parser.c (c_parser_gimple_postfix_expression): Support _Literal (int *) &x for address literals.
2019-07-10 Richard Biener <rguenther@suse.de>
c/
* gimple-parser.c (c_parser_gimple_postfix_expression): Support
_Literal (int *) &x for address literals.
* tree-ssa-sccvn.c (vn_reference_lookup_3): Look at valueized
LHS whenever possible.
* gcc.dg/torture/ssa-fre-5.c: New testcase.
* gcc.dg/torture/ssa-fre-6.c: Likewise.
* gcc.dg/torture/ssa-fre-7.c: Likewise.
From-SVN: r273354
Dmitriy Anisimkov [Wed, 10 Jul 2019 09:03:00 +0000 (09:03 +0000)]
[Ada] System.Strings.Stream_Ops: do not depend on Stream_IO
Dependence was only from Ada.Streams.Stream_IO.End_Error exception which
is renaming of the Ada.IO_Exceptions.End_Error. Use
Ada.IO_Exceptions.End_Error directly.
2019-07-10 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops
dependence on System.Streams.Stream_IO.
From-SVN: r273353
Ed Schonberg [Wed, 10 Jul 2019 09:02:55 +0000 (09:02 +0000)]
[Ada] Spurious run-time error with 64-bit modular types
As a lexical element an integer literal has type Universal_Integer, i.e
is compatible with any integer type. This is semantically consistent and
simplifies type checking and subsequent constant folding when
applicable. An exception is caused by 64-bit modular types, whose upper
bound is not representable in a non-static context that will use 64-bit
integers at run-time. For such cases we need to preserve the information
that the analyzed literal has that modular type. For simplicity we
preseve the information for all integer literals that result from a
modular operation. This happens after prior analysis (or construction)
of the literal, and after type checking and resolution.
2019-07-10 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of
the literal if prior analysis determined that its type is a
modular integer type.
gcc/testsuite/
* gnat.dg/modular5.adb: New testcase.
From-SVN: r273352
Doug Rupp [Wed, 10 Jul 2019 09:02:51 +0000 (09:02 +0000)]
[Ada] Do not attempt to re-arm guard page on x86_64-vx7(r2)
A change in the API prohibits accessing Tcb fields directly. The bug in
VxWorks7 (failure to re-arm the guard page) now appears to be fixed, so
this is no long necessary.
2019-07-10 Doug Rupp <rupp@adacore.com>
gcc/ada/
* init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2).
From-SVN: r273351
Ed Schonberg [Wed, 10 Jul 2019 09:02:47 +0000 (09:02 +0000)]
[Ada] Crash on aggregate for limited type in extended return
This patch fixes a compiler abort on an extended return statement whose
expression is an aggregate (to be built in place) for a discriminated
record with a limited component. The build-in-place mechanism creates an
access type and a renaming declaration through which individual
components are assigned. The renamed object is constrained because it is
limited, and the renaming declaration does not need to create a local
subtype indication for it, which may lead to type mismatches in the
back-end, and is in any case redundant. This patch extends this
optimization to the case of records that are limited only because of a
limitied component, and not because they are explicit declared limited.
2019-07-10 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch8.adb (Check_Constrained_Object): A record that is
limited because of the presence of a limited component is
constrained, and no subtype indiciation needs to be created for
it, just as is the case for declared limited records.
gcc/testsuite/
* gnat.dg/limited3.adb, gnat.dg/limited3_pkg.adb,
gnat.dg/limited3_pkg.ads: New testcase.
From-SVN: r273350
Yannick Moy [Wed, 10 Jul 2019 09:02:42 +0000 (09:02 +0000)]
[Ada] Fix spurious messages on global variables for SPARK pointer support
Pointer support in GNATprove leads to spurious messages about global
variables, with local variables declared in local packages and protected
components. Now fixed.
There is no impact on compilation.
2019-07-10 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New
function to determine if a subprogram is protected.
* sem_spark.adb (Setup_Protected_Components): New procedure to
add protected components to the environment.
(Check_Callable_Body): Call the new Setup_Protected_Components.
(Check_Package_Spec): Merge local environment with enclosing one
when done.
From-SVN: r273349
Claire Dross [Wed, 10 Jul 2019 09:02:36 +0000 (09:02 +0000)]
[Ada] Fix possible crashes in GNATprove analysis of pointers
The new analysis of SPARK pointer rules could crash on some constructs.
Now fixed.
There is no impact on compilation.
2019-07-10 Claire Dross <dross@adacore.com>
gcc/ada/
* sem_spark.adb (Check_Expression): Allow digits constraints as
input.
(Illegal_Global_Usage): Pass in the entity.
(Is_Subpath_Expression): New function to allow different nodes
as inner parts of a path expression.
(Read_Indexes): Allow concatenation and aggregates with box
expressions. Allow attributes Update and Loop_Entry.
(Check_Expression): Allow richer membership test.
(Check_Node): Ignore bodies of generics.
(Get_Root_Object): Allow concatenation and attributes.
From-SVN: r273348
Hristian Kirtchev [Wed, 10 Jul 2019 09:02:31 +0000 (09:02 +0000)]
[Ada] Spurious error on discriminant of incomplete type
This patch corrects the conformance verification of discriminants to
provide symmetry between the analysis of incomplete and full view
discriminants. As a result, types of discriminants always resolve to the
proper view.
2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to
discover the type of a full view discriminant.
gcc/testsuite/
* gnat.dg/incomplete7.adb, gnat.dg/incomplete7.ads: New testcase.
From-SVN: r273347
Arnaud Charlet [Wed, 10 Jul 2019 09:02:27 +0000 (09:02 +0000)]
[Ada] Improve gnatmem's doc for the depth switch
2019-07-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada
* doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's
doc for the depth switch.
From-SVN: r273346
Bob Duff [Wed, 10 Jul 2019 09:02:22 +0000 (09:02 +0000)]
[Ada] GNATpp: document the --source-line-breaks switch
2019-07-10 Bob Duff <duff@adacore.com>
gcc/ada/
* doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
--source-line-breaks switch.
From-SVN: r273345
Justin Squirek [Wed, 10 Jul 2019 09:02:17 +0000 (09:02 +0000)]
[Ada] Documentation of Img attribute out of date
2019-07-10 Justin Squirek <squirek@adacore.com>
gcc/ada/
* doc/gnat_rm/implementation_defined_attributes.rst: Add mention
of 'Image attribute with 'Img's entry to mention additional
added 2012 usage of Obj'Image.
* doc/gnat_rm/implementation_defined_pragmas.rst: Correct
mispelling of Async_Writers.
* gnat_rm.texi: Regenerate.
* sem_prag.adb (Analyze_Pragma): Correct mispelling of
Async_Writers.
* sem_util.adb (State_Has_Enabled_Property): Correct mispelling
of Async_Writers.
From-SVN: r273344
Simon Buist [Wed, 10 Jul 2019 09:02:12 +0000 (09:02 +0000)]
[Ada] Entity names are not unique
This patch updates the Unique_Name procedure in order to prefix the
string "ada___" to child units that have a nested subprogram or package,
so that they do not clash with a parent package of the same name.
This is for GNATprove only and does not affect regular compilation.
2019-07-10 Simon Buist <buist@adacore.com>
gcc/ada/
* sem_util.ads (Child_Prefix): New constant.
* sem_util.adb (Unique_Name): Add a special prefix to child
units that have a nested subprogram or package.
From-SVN: r273343
Arnaud Charlet [Wed, 10 Jul 2019 09:02:08 +0000 (09:02 +0000)]
[Ada] Add an annotation for static analysis
2019-07-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert.
From-SVN: r273342
Hristian Kirtchev [Wed, 10 Jul 2019 09:02:03 +0000 (09:02 +0000)]
[Ada] Spelling mistakes in error messages
This patch updates certain error messages to eliminate spelling
mistakes. No need for a test as this is a minor cosmetic fix.
2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the
spelling in certain error messages.
(Check_Pragma_Implemented): Correct the spelling in certain
error messages.
From-SVN: r273341
Eric Botcazou [Wed, 10 Jul 2019 09:01:58 +0000 (09:01 +0000)]
[Ada] Improve support for tuning branch probability heuristics
This adds a new GNAT.Branch_Prediction package to make it possible to
tune the branch probability heuristics more finely. This package
contains the equivalent of __builtin_expect in C/C++ plus a couple of
specializations.
The following program gives a summary of the usage:
package Q is
I : Integer;
pragma Volatile (I);
end Q;
with GNAT.Branch_Prediction; use GNAT.Branch_Prediction;
with Text_IO; use Text_IO;
with Q; use Q;
procedure P is
begin
if Unlikely (I = 0) then
Put_Line ("Zero was passed");
return;
end if;
if Likely (I > 0) then
Put_Line ("A positive number was passed");
else
Put_Line ("A negative number was passed");
end if;
if Expect ((I rem 2) = 0, False) then
Put_Line ("An even number was passed");
else
Put_Line ("An odd number was passed");
end if;
end;
2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre.
* libgnat/g-brapre.ads: New package specification.
* doc/gnat_rm/the_gnat_library.rst: Document it.
* gnat_rm.texi: Regenerate.
From-SVN: r273340
Yannick Moy [Wed, 10 Jul 2019 09:01:53 +0000 (09:01 +0000)]
[Ada] Allow multiple units per file in GNATprove
For analysis tools that rely on information generated in ALI files, but
do not generate object files, the frontend did not generate the special
extension names like file~2.ali for unit 2 in the file. This is needed
to be able to analyze files with multiple units. Now fixed.
There is no impact on compilation.
2019-07-10 Yannick Moy <moy@adacore.com>
gcc/ada/
* osint-c.adb (Set_File_Name): Always add extension for multiple
units per file mode.
From-SVN: r273339
Corentin Gay [Wed, 10 Jul 2019 09:01:48 +0000 (09:01 +0000)]
[Ada] sysdep.c: correct include directives ordering
Some VxWorks headers are relying on types that are defined in
`vxWorks.h` but do not include it themselves, we move the include
directive for `vxWorks.h` at the top of the include directives.
2019-07-10 Corentin Gay <gay@adacore.com>
gcc/ada/
* sysdep.c: Put include directive for 'vxWorks.h' before any
other VxWorks headers.
From-SVN: r273338
Eric Botcazou [Wed, 10 Jul 2019 09:01:43 +0000 (09:01 +0000)]
[Ada] GNAT RM: add note about debuggers for Scalar_Storage_Order
2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* doc/gnat_rm/implementation_defined_attributes.rst
(Scalar_Storage_Order): Minor tweaks. Add note about debuggers.
* gnat_rm.texi: Regenerate.
From-SVN: r273337
Hristian Kirtchev [Wed, 10 Jul 2019 09:01:38 +0000 (09:01 +0000)]
[Ada] Spurious error on case expression with limited result
This patch modifies the expansion of case expressions to prevent a
spurious error caused by the use of assignment statements to capture the
result of the case expression when the associated type is limited.
2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* exp_ch4.adb (Expand_N_Case_Expression): Mark the generated
assignments to the temporary result as being OK because the
expansion of case expressions is correct by construction.
(Is_Copy_Type): Update the predicate to match the comment
within.
gcc/testsuite/
* gnat.dg/limited2.adb, gnat.dg/limited2_pack_1.adb,
gnat.dg/limited2_pack_1.ads, gnat.dg/limited2_pack_2.adb,
gnat.dg/limited2_pack_2.ads: New testcase.
From-SVN: r273336
Hristian Kirtchev [Wed, 10 Jul 2019 09:01:33 +0000 (09:01 +0000)]
[Ada] Minor reformatting
2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb,
sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb,
sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb,
sem_util.adb, warnsw.ads: Minor reformatting.
From-SVN: r273335
Joffrey Huguet [Wed, 10 Jul 2019 09:01:28 +0000 (09:01 +0000)]
[Ada] Add contracts to Strings libraries
This patch adds contracts to Ada.Strings libraries, in order to remove
warnings when using these libraries in SPARK.
2019-07-10 Joffrey Huguet <huguet@adacore.com>
gcc/ada/
* libgnat/a-strbou.ads, libgnat/a-strfix.ads,
libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global
contracts, contract cases, preconditions and postconditions to
procedures and functions.
From-SVN: r273334
Doug Rupp [Wed, 10 Jul 2019 09:01:17 +0000 (09:01 +0000)]
[Ada] Vxworks7r2 SR0610 coalesced some macro values
SR0600 and SR0610 cannot be differentiated by macro testing (arguably an
oversight in header file version.h) so: The case statement testing for
"file not found" is reformulated into an if/else series of statements to
avoid a problem where two cases have identical values in SR0610, but
different values in SR0600.
2019-07-10 Doug Rupp <rupp@adacore.com>
gcc/ada/
* sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
work for vxworks7r2 SR0610.
From-SVN: r273333
Doug Rupp [Wed, 10 Jul 2019 09:01:13 +0000 (09:01 +0000)]
[Ada] The environ macro is broken on vxworks7r2 SR0610
In SR0610, the TCB is made private, so the task environ field used by
the environ macro is no longer visible. Arguably this is a bug, however
a more correct approach is to use accessor functions to retrieve this
field and not use the environ macro, thus avoiding the problem.
2019-07-10 Doug Rupp <rupp@adacore.com>
gcc/ada/
* env.c (__gnat_environ): Reformulate to also work for
vxworks7r2 SR0610.
From-SVN: r273332
Patrick Bernardi [Wed, 10 Jul 2019 09:01:08 +0000 (09:01 +0000)]
[Ada] New port for ppc-vx7r2
2019-07-10 Patrick Bernardi <bernardi@adacore.com>
gcc/ada/
* Makefile.rtl: Handle vxworks7r2 ppc target
From-SVN: r273331
Hristian Kirtchev [Wed, 10 Jul 2019 09:00:59 +0000 (09:00 +0000)]
[Ada] Elaboration order v4.0 and cycle detection
This patch introduces a new cycle detection algorithm which is based on
Tarjan's "Enumeration of the Elementary Circuits of a Directed Graph"
algorithm, with several ideas borrowed from Jonson's "Finding all the
Elementary Circuits of a Directed Graph" algorithm.
No need for a test because the new algorithm improves the performance of
cycle detection only.
2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* bindo.adb: Update the section on switches.
* bindo-graphs.adb
(Add_Cycle, Add_Vertex_And_Complement): Remove.
(Create): The graph no longer needs a set of recorded cycles
because the cycles are not rediscovered in permuted forms.
(Cycle_End_Vertices): New routine.
(Destroy): The graph no longer needs a set of recorded cycles
because the cycles are not rediscovered in permuted forms.
(Destroy_Library_Graph_Vertex): Move to the library level.
(Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge):
Remove.
(Find_Cycles_From_Successor, Find_Cycles_From_Vertex,
Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines.
(Insert_And_Sort): Remove.
(Is_Elaborate_Body_Edge): Use predicate
Is_Vertex_With_Elaborate_Body.
(Is_Recorded_Cycle): Remove.
(Is_Vertex_With_Elaborate_Body): New routine.
(Normalize_And_Add_Cycle): Remove.
(Precedence): Rename to xxx_Precedence, where xxx relates to the
input. These versions better reflect the desired input
precedence.
(Record_Cycle): New routine.
(Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove.
(Trace_xxx): Update all versions to use debug switch -d_t.
(Trace_Component): New routine.
(Trace_Eol): Removed.
(Trace_Vertex): Do not output the component as this information
is already available when the component is traced.
(Unvisit, Visit): New routine.
* bindo-graphs.ads: Add new instance LGV_Lists. Remove instance
RC_Sets. Update the structure of type Library_Graph_Attributes
to remove the set of recorded cycles.
(Destroy_Library_Graph_Vertex): Move to the library level.
* bindo-writers.adb (Write_Component_Vertices): Output
information about the number of vertices.
* debug.adb: Document the use of binder switch -d_t. Update the
use of binder switch -d_T.
From-SVN: r273330
Yannick Moy [Wed, 10 Jul 2019 09:00:48 +0000 (09:00 +0000)]
[Ada] Fix crashes on ownership checking in SPARK
Code that violates the conditions for ownership checking should lead to
error messages pointing to the violations instead of crashes.
There is no impact on compilation, only GNATprove.
2019-07-10 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_spark.adb (Get_Root_Object): Replace precondition by error
message.
(Read_Indexes): Replace precondition by error message.
(Check_Callable_Body): Check only traversal function returns an
anonymous access type.
(Check_Expression): Issue error on unexpected expression as
path.
* sem_util.adb (First_Global): Fix access to global on
entry/task.
From-SVN: r273329
Javier Miranda [Wed, 10 Jul 2019 09:00:16 +0000 (09:00 +0000)]
[Ada] Missing implicit interface type conversion
The compiler skips adding an implicit type conversion when the interface
type is visible through a limited-with clause.
No small reproducer available.
2019-07-10 Javier Miranda <miranda@adacore.com>
gcc/ada/
* exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram.
(Expand_Call_Helper): Handle non-limited views when we check if
any formal is a class-wide interface type.
* exp_disp.adb (Expand_Interface_Actuals): Handle non-limited
views when we look for interface type formals to force "this"
displacement.
From-SVN: r273328
Ed Schonberg [Wed, 10 Jul 2019 08:59:55 +0000 (08:59 +0000)]
[Ada] Spurious error on overloaded equality in postcondition
This patch fixes a spurious error in a postcondition in a nested
instantiation when the expression includes an inherited equality and
checks are enabled.
2019-07-10 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Equality_Op): Do not replace the resolved
operator by its alias if expander is not active, because the
operand type may not be frozen yet and its inherited operations
have not yet been created.
gcc/testsuite/
* gnat.dg/equal8.adb, gnat.dg/equal8.ads,
gnat.dg/equal8_pkg.ads: New testcase.
From-SVN: r273327
Hristian Kirtchev [Wed, 10 Jul 2019 08:59:46 +0000 (08:59 +0000)]
[Ada] Elaboration order v4.0 and linker switches
This patch adds a missing functionality with respect to elaboration
order v3.0. Units carry an attribute called Elab_Position which among
other things controls the sorting of linker switches by gnatbind.
Setting the proper position ensures the gnatbind will output the linker
switches in an order compatible with what gnatlink expects.
No simple test available as this requires a Windows cross-compiler.
2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* bindo-elaborators.adb (Elaborate_Units): Set attribute
Elab_Position of all elaborated units.
(Set_Unit_Elaboration_Positions): New routine.
From-SVN: r273326
Gary Dismukes [Wed, 10 Jul 2019 08:59:38 +0000 (08:59 +0000)]
[Ada] Minor reformatting
2019-07-10 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* exp_util.adb: Reformatting and a typo fix.
From-SVN: r273325
Yannick Moy [Wed, 10 Jul 2019 08:59:33 +0000 (08:59 +0000)]
[Ada] Use renamings in GNATprove mode for side-effects extraction
In the GNATprove mode for formal verification, prefer renamings over
declaration of a constant to extract side-effects from expressions,
whenever the constant could be of an owning type, as declaring a
constant of an owning type has an effect on ownership which is
undesirable.
There is no impact on compilation.
2019-07-10 Yannick Moy <moy@adacore.com>
gcc/ada/
* exp_util.adb (Remove_Side_Effects): Prefer renamings for
objects of possible owning type in GNATprove mode.
From-SVN: r273324
Paolo Carlini [Wed, 10 Jul 2019 08:24:54 +0000 (08:24 +0000)]
decl.c (get_type_quals, [...]): New.
/cp
2019-07-10 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (get_type_quals,
smallest_type_location (const cp_decl_specifier_seq*)): New.
(check_tag_decl): Use smallest_type_location in error_at about
multiple types in one declaration.
(grokdeclarator): Use locations[ds_complex] in error_at about
complex invalid; use locations[ds_storage_class] in error_at
about static cdtor; use id_loc in error_at about flexible
array member in union; use get_type_quals.
/testsuite
2019-07-10 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/complex-invalid-1.C: New.
* g++.dg/diagnostic/static-cdtor-1.C: Likewise.
* g++.dg/cpp1z/has-unique-obj-representations2.C: Test location
too.
* g++.dg/other/anon-union3.C: Adjust expected location.
* g++.dg/parse/error8.C: Likewise.
From-SVN: r273323
Jan Hubicka [Wed, 10 Jul 2019 06:08:29 +0000 (08:08 +0200)]
tree-ssa-alias.c (nonoverlapping_component_refs_p_1): Break out from ...; work also on duplicated types.
* tree-ssa-alias.c (nonoverlapping_component_refs_p_1): Break out
from ...; work also on duplicated types.
(nonoverlapping_component_refs_since_match): ... here
(ncr_type_uid): Break out from ...
(ncr_compar): ... here; look for TYPE_UID of canonical type if
available.
(nonoverlapping_component_refs_p): Use same_type_for_tbaa to match
the types and nonoverlapping_component_refs_p_1 to disambiguate.
* g++.dg/lto/alias-3_0.C: New file.
* g++.dg/lto/alias-3_1.c: New file.
From-SVN: r273322