164082 Commits

Author SHA1 Message Date
Segher Boessenkool
c057b53a37 rs6000: Fix one more vec_splat case
This fixes the one remaining case where the stricter vec_splat checking
complains in the testsuite.


	* g++.dg/ext/altivec-6.C: Change the vec_splat second argument to a
	valid value, in the "vector bool int" case.

From-SVN: r264681
2018-09-28 00:56:37 +02:00
Martin Sebor
73ca9fb5df tree.h (tree_to_shwi): Add attribute nonnull and pure.
gcc/ChangeLog:

	* tree.h (tree_to_shwi): Add attribute nonnull and pure.
	(tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same.
	(int_fits_type_p): Same.

gcc/ada/ChangeLog:

	* gcc-interface/utils.c (make_packable_type): Introduce a temporary
	to avoid -Wnonnull.
	(unchecked_convert): Same.

From-SVN: r264680
2018-09-27 16:55:23 -06:00
Jinsong Ji
f20ac63787 mmintrin.h (_mm_unpackhi_pi8): Change __int128_t to __int128.
2018-09-27  Jinsong Ji  <jji@us.ibm.com>
	    Bill Schmidt  <wschmidt@linux.ibm.com>

	* config/rs6000/mmintrin.h (_mm_unpackhi_pi8): Change __int128_t
	to __int128.
	(_mm_unpacklo_pi8): Likewise.
	(_mm_add_pi8): Likewise.
	(_mm_add_pi16): Likewise.
	(_mm_add_pi32): Likewise.
	(_mm_sub_pi8): Likewise.
	(_mm_sub_pi16): Likewise.
	(_mm_sub_pi32): Likewise.
	(_mm_cmpgt_pi8): Likewise.
	(_mm_cmpeq_pi16): Likewise.
	(_mm_cmpgt_pi16): Likewise.
	(_mm_cmpeq_pi32): Likewise.
	(_mm_cmpgt_pi32): Likewise.
	(_mm_adds_pi8): Likewise.
	(_mm_adds_pi16): Likewise.
	(_mm_adds_pu8): Likewise.
	(_mm_adds_pu16): Likewise.
	(_mm_subs_pi8): Likewise.
	(_mm_subs_pi16): Likewise.
	(_mm_subs_pu8): Likewise.
	(_mm_subs_pu16): Likewise.
	(_mm_madd_pi16): Likewise.
	(_mm_mulhi_pi16): Likewise.
	(_mm_mullo_pi16): Likewise.
	(_mm_sll_pi16): Likewise.
	(_mm_sra_pi16): Likewise.
	(_mm_srl_pi16): Likewise.
	(_mm_set1_pi16): Likewise.
	(_mm_set1_pi8): Likewise.
	* config/rs6000/xmmintrin.h (_mm_max_pi16): Likewise.
	(_mm_max_pu8): Likewise.
	(_mm_min_pi16): Likewise.
	(_mm_min_pu8): Likewise.

From-SVN: r264678
2018-09-27 20:48:53 +00:00
Uros Bizjak
f3f518f2d8 i386.md (UNSPEC_FLDCW): Remove.
* config/i386/i386.md (UNSPEC_FLDCW): Remove.

From-SVN: r264677
2018-09-27 22:21:06 +02:00
Uros Bizjak
eaa17c21ba i386.md (FPSR_REG): Remove.
* config/i386/i386.md (FPSR_REG): Remove.
	(x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG.
	(x86_fldcw_1): Remove insn pattern.
	(fnstenv): Do not clobber FPCR_REG.
	(fldenv): Ditto.
	* config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register.
	(CALL_USED_REGISTERS): Ditto.
	(REG_ALLOC_ORDER): Ditto.
	(REG_CLASS_CONTENTS): Ditto.
	(HI_REGISTER_NAMES): Ditto.
	(ADDITIONAL_REGISTER_NAMES): Use defines instead
	of numerical constants.
	* config/i386/i386.c (regclass_map): Remove fpsr register.
	(dbx_register_map): Ditto.
	(dbx64_register_map): Ditto.
	(svr4_dbx_register_map): Ditto.
	(print_reg): Do not handle FPCR_REG.

testsuite/ChangeLog:

	* gcc.dg/rtl/x86_64/dfinit.c: Update scan-rtl-dump string.
	* gcc.dg/rtl/x86_64/times-two.c.before-df.c: Ditto.
	* gcc.target/i386/pr79804.c (foo): Use register "19", not "20".

From-SVN: r264676
2018-09-27 22:04:15 +02:00
Segher Boessenkool
24676f1215 rs6000: Delete many HAVE_AS_* (PR87149)
This deletes most HAVE_AS_* that determine if the assembler supports
some ISA level (and also HAVE_AS_MFPGPR and HAVE_AS_DFP).

These are not useful: we will only generate an instruction that requires
some newer ISA if the user specifically asked for it (with -mcpu=, say).
If the assembler cannot handle that, it is fine if it gives an error.

They also hurt: it increases the number of possible situations that all
need handling and all need testing.  We do not handle all cases, and
obviously do not test all either.

This patch removes:

HAVE_AS_POPCNTB (power5,  2.02)
HAVE_AS_FPRND   (power5+, 2.04)
HAVE_AS_CMPB    (power6,  2.05)
HAVE_AS_POPCNTD (power7,  2.06)
HAVE_AS_POWER8  (power8,  2.07)
HAVE_AS_POWER9  (power9,  3.0)

HAVE_AS_DFP     (power6,  2.05, server)
HAVE_AS_MFPGPR  (power6x but not later, not arch)


	PR target/87149
	* config.in (HAVE_AS_CMPB, HAVE_AS_DFP, HAVE_AS_FPRND, HAVE_AS_MFPGPR,
	HAVE_AS_POPCNTB, HAVE_AS_POPCNTD, HAVE_AS_POWER8, HAVE_AS_POWER9):
	Delete, always treat as true.
	* config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
	Ditto.  Simplify remaining code.
	* config/powerpcspe/powerpcspe.h: Ditto.
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto.
	Simplify remaining code.
	(rs6000_expand_builtin): Ditto.
	* config/rs6000/rs6000.h: Ditto.
	* configure.ac: Ditto.
	* configure: Regenerate.

From-SVN: r264675
2018-09-27 21:54:09 +02:00
Martin Liska
8830704064 coverage.c (get_coverage_counts): Revert the formatting of missing profile opt info.
2018-09-27  Martin Liska  <mliska@suse.cz>

	* coverage.c (get_coverage_counts): Revert the formatting
	of missing profile opt info.

	* g++.dg/pr60518.C: Add -Wno-missing-profile.
	* g++.dg/torture/pr59265.C: Likewise.
	* g++.dg/tree-prof/morefunc.C: Likewise.
	* g++.dg/tree-ssa/dom-invalid.C: Likewise.
	* gcc.dg/pr26570.c: Likewise.
	* gcc.dg/pr32773.c: Likewise.
	* gcc.dg/pr40209.c: Likewise.
	* gcc.dg/pr51957-1.c: Likewise.
	* gcc.dg/pr80747.c: Likewise.
	* gcc.target/aarch64/pr62262.c: Likewise.

From-SVN: r264669
2018-09-27 14:53:35 +00:00
Richard Biener
b88da9bbd8 re PR debug/87451 (FAIL: gcc.dg/debug/dwarf2/inline5.c)
2018-09-27  Richard Biener  <rguenther@suse.de>

	PR testsuite/87451
	* gcc.dg/debug/dwarf2/inline5.c: Deal with different comment characters.

From-SVN: r264668
2018-09-27 14:17:52 +00:00
Richard Biener
ac02e5b754 re PR debug/37801 (DWARF output for inlined functions doesn't always use DW_TAG_inlined_subroutine)
2018-09-27  Richard Biener  <rguenther@suse.de>

	PR debug/37801
	PR debug/87440
	* dwarf2out.c (set_block_origin_self): Do not mark outermost
	block as we do not output that.
	(gen_inlined_subroutine_die): Elide the originally outermost
	block, matching what we do for concrete instances.
	(decls_for_scope): Add parameter specifying whether to recurse
	to subblocks.

	* gcc.dg/debug/dwarf2/inline2.c: Adjust.
	* gcc.dg/debug/dwarf2/inline4.c: New testcase.

From-SVN: r264667
2018-09-27 14:10:45 +00:00
Andrew Stubbs
19ef5a8fd5 [pr82089] Don't sign-extend SFV 1 in BImode
This is an update of the patch posted to PR82089 long ago.  We ran into the
same bug on GCN, so we need this fixed as part of this series.

2018-09-27  Andrew Stubbs  <ams@codesourcery.com>
            Tom de Vries  <tom@codesourcery.com>

	PR 82089

	gcc/
	* expmed.c (emit_cstore): Fix handling of result_mode == BImode and
	STORE_FLAG_VALUE == 1.

Co-Authored-By: Tom de Vries <tom@codesourcery.com>

From-SVN: r264666
2018-09-27 11:15:48 +00:00
Paolo Carlini
90e79377a5 re PR c++/67544 (ICE: SIGSEGV in tree_check3 (tree.h:2896) with -fconcepts)
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/67544
	* g++.dg/concepts/pr67544.C: New.

From-SVN: r264665
2018-09-27 09:53:08 +00:00
Paolo Carlini
0798984a5a re PR c++/84940 (internal compiler error: in build_value_init_noctor, at cp/init.c:465)
/cp
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84940
	* semantics.c (finish_unary_op_expr): Check return value of
	build_x_unary_op for error_mark_node.

/testsuite
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84940
	* g++.dg/expr/unary4.C: New.

From-SVN: r264664
2018-09-27 08:33:41 +00:00
Andreas Krebbel
291a9e980e S/390: Implement speculation barrier
gcc/ChangeLog:

2018-09-27  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New
	constant definitions.
	("tx_assist"): Replace magic number with PPA_TX_ABORT.
	("*ppa"): Enable pattern also for -march=zEC12 -mno-htm.
	("speculation_barrier"): New expander definition.

From-SVN: r264663
2018-09-27 08:03:42 +00:00
GCC Administrator
461553e6ed Daily bump.
From-SVN: r264661
2018-09-27 00:16:55 +00:00
Indu Bhagat
bc162b0e6f re PR gcov-profile/86957 (gcc should warn about missing profiles for a compilation unit or a new function with -fprofile-use)
2018-09-26  Indu Bhagat  <indu.bhagat@oracle.com>

	PR gcov-profile/86957
	* common.opt: New warning option -Wmissing-profile.
	* coverage.c (get_coverage_counts): Add warning for missing .gcda file.
	* doc/invoke.texi: Document -Wmissing-profile.

From-SVN: r264657
2018-09-26 22:29:54 +00:00
Joseph Myers
8313a7643a Support excess precision for integer / floating-point comparisons (PR c/87390).
In C11, implicit conversions from integer to floating-point types
produce results with the range and precision of the corresponding
evaluation format rather than only those of the type implicitly
converted to.  This patch implements that case of C11 excess precision
semantics in the case of a comparison between integer and
floating-point types, previously missed when implementing other cases
of excess precision for such implicit conversions.  As with other such
fixes, this patch conservatively follows the reading of C99 where
conversions from integer to floating-point do not produce results with
excess precision and so the change is made for C11 mode only.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc/c:
	PR c/87390
	* c-typeck.c (build_binary_op): Use excess precision for
	comparisons of integers and floating-point for C11 and later.

gcc/testsuite:
	PR c/87390
	* gcc.target/i386/excess-precision-9.c,
	gcc.target/i386/excess-precision-10.c: New tests.

From-SVN: r264656
2018-09-26 22:14:16 +01:00
Jim Wilson
01414d53cf RISC-V: Add missing negate patterns.
gcc/
	* config/riscv/riscv.md (subsi3_extended2): Add J constraint.
	(negdi2, negsi2, negsi2_extended, negsi2_extended2): New.

From-SVN: r264655
2018-09-26 14:06:01 -07:00
Martin Sebor
d89fde46d7 tree.c (zerop): Change return type to bool.
gcc/ChangeLog:

	* tree.c (zerop): Change return type to bool.
	(integer_zerop, integer_onep, integer_each_onep): Same.
	(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
	(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
	(real_onep, real_minus_onep, chain_index): Same.
	(print_type_hash_statistics, type_list_equal): Same.
	* tree.h (zerop): Same.
	(zerop, integer_zerop, integer_onep, integer_each_onep): Same.
	(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
	(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
	(real_onep, real_minus_onep, chain_index): Same.
	(print_type_hash_statistics, type_list_equal): Same.

From-SVN: r264653
2018-09-26 13:03:26 -06:00
Jim Wilson
1fb157ccb5 RISC-V: Delete obsolete MIPS comment.
gcc/
	* config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment.

From-SVN: r264652
2018-09-26 11:42:19 -07:00
Jakub Jelinek
0974b794c1 re PR target/87414 (-mindirect-branch=thunk produces thunk with incorrect CFI on x86_64)
PR target/87414
	* config/i386/i386.c: Include debug.h and dwarf2out.h.
	(output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the
	call.

From-SVN: r264651
2018-09-26 19:00:49 +02:00
Andrew Stubbs
1413a4190f Fix AArch64 ILP32 ICE.
Ensure that the address really is the correct mode for an address.

2018-09-25  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* builtins.c (get_builtin_sync_mem): Force address mode conversion.

From-SVN: r264650
2018-09-26 15:59:13 +00:00
Uros Bizjak
0a76bba487 crtprec.c (set_precision): Use fnstcw instead of fstcw.
* config/i386/crtprec.c (set_precision): Use fnstcw instead of fstcw.

From-SVN: r264649
2018-09-26 17:25:15 +02:00
Uros Bizjak
2202b162bb i386.h (enum reg_class): Remove FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS.
* config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS
	and FP_SECOND_SSE_REGS.
	(REG_CLASS_NAMES): Ditto.
	(REG_CLASS_CONTENTS): Ditto.
	* config/i386/i386.c (ix86_preferred_reload_class) Do not handle
	FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS classes.
	(ix86_preferred_output_reload_class): Ditto.
	* config/i386/i386.md (fix_trunc<mode>_i387_fisttp): Change "=&1f"
	clobber constraint to "=&f".
	(fix_truncdi_i387): Ditto.
	(lrintxfdi2): Ditto.
	(fistdi2_<rounding>): Ditto.
	(fpremxf4_i387): Change "=u" constraint to "=f".
	(fprem1xf4_i387): Ditto.
	(sincosxf3): Ditto.
	(fptanxf4_i387): Ditto.
	(fxtractxf3_i387): Ditto.
	(fscalexf4_i387): Ditto.
	(atan2xf3): Change "u" constraint to "f".
	(fyl2xxf3_i387): Ditto.
	(fyl2xp1xf3_i387): Ditto.

From-SVN: r264648
2018-09-26 17:17:32 +02:00
Ian Lance Taylor
dd554b787d syscall: don't assume we have a GETEUID system call
On Alpha GNU/Linux there is no geteuid system call, there is only
    getresuid.  The raw geteuid system call is only used for testing, so
    just skip the test if it's not available.
    
    Reviewed-on: https://go-review.googlesource.com/137655

From-SVN: r264647
2018-09-26 15:17:30 +00:00
Uros Bizjak
6693898454 * ChangeLog: Add missing PR number.
From-SVN: r264646
2018-09-26 17:00:00 +02:00
Uros Bizjak
8c097065b4 re PR target/87439 (ICE in ix86_mode_needed, at config/i386/i386.c:18907)
PR target/87439
	* config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update
	for removed I387_MASK_PM entity.

From-SVN: r264645
2018-09-26 16:55:59 +02:00
Jeff Law
8caf8f777c Revert
2018-09-26  Alexey Neyman  <stilor@att.net>

	* graphite.h: Include <isl/id.h> and <isl/space.h>; these
	headers are no longer pulled in by <isl/val.h>.

From-SVN: r264644
2018-09-26 08:50:03 -06:00
Richard Biener
39aae60362 re PR debug/87443 (GCC mixes abstract and concrete instances in abstract origins for inlines)
2018-09-26  Richard Biener  <rguenther@suse.de>

	PR debug/87443
	* dwarf2out.c (gen_lexical_block_die): Do not equate inline
	or concrete instance DIE to the tree.  Create abstract origin
	attributes also for concrete instances.

	* gcc.dg/debug/dwarf2/inline5.c: New testcase.

From-SVN: r264643
2018-09-26 14:35:48 +00:00
Alexey Neyman
9b4e3b9a66 graphite.h: Include <isl/id.h> and <isl/space.h>...
* graphite.h: Include <isl/id.h> and <isl/space.h>; these
	headers are no longer pulled in by <isl/val.h>.

From-SVN: r264642
2018-09-26 08:09:03 -06:00
Rainer Orth
19071aa48c Ignore chmod errors during mostlyclean-local, check-go-tool
* Makefile.am (mostlyclean-local): Ignore chmod errors.
	(check-go-tool): Likewise.
	* Makefile.in: Regenerate.

From-SVN: r264641
2018-09-26 12:56:09 +00:00
Martin Jambor
ce6f088889 [PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL
2018-09-26  Martin Jambor  <mjambor@suse.cz>

	PR c/87347
	c/
	* c-parser.c (warn_for_abs): Bail out if TYPE_ARG_TYPES is NULL.  Fix
        comment.

	testsuite/
	* gcc.dg/pr87347.c: New test.

From-SVN: r264640
2018-09-26 13:58:18 +02:00
Paolo Carlini
6fe0c58b9f re PR c++/71131 ([concepts] Ill-formed code declaring a variable with a template concept not rejected)
2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71131
	* g++.dg/concepts/pr71131.C: New.

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71127
	* g++.dg/concepts/pr71127.C: New.

From-SVN: r264639
2018-09-26 09:59:56 +00:00
Paolo Carlini
3c010a2410 re PR c++/67655 ([concepts] expression constraints and variadic expansions)
2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/67655
	* g++.dg/concepts/pr67655.C: New.

From-SVN: r264638
2018-09-26 09:23:00 +00:00
Elisa Barboni
1899cb6844 [Ada] SPARK: minor error message enhancement
2018-09-26  Elisa Barboni  <barboni@adacore.com>

gcc/ada/

	* sem_prag.adb (Check_Refined_Global_Item): Improve error
	message.

From-SVN: r264637
2018-09-26 09:20:10 +00:00
Thomas Quinot
def15641da [Ada] Fix inheritance of representation items defined as aspects
When a representation item is defined by a pragma or attribute
definition clause, the entity it applies to is that of the Name of the
representation item. But when it is defined by an aspect definition, the
entity is directly denoted by the Entity attribute of the represenation
item. The circuitry that inherits representation items for derived types
or subtypes must account for these two possible cases.

2018-09-26  Thomas Quinot  <quinot@adacore.com>

gcc/ada/

	* sem_ch13.adb (Inherit_Aspects_At_Freeze_Point): For a
	representation item that is an N_Aspect_Definition, retrieve the
	entity it applies to using the Entity attribute.

gcc/testsuite/

	* gnat.dg/sso13.adb: New testcase.

From-SVN: r264636
2018-09-26 09:20:05 +00:00
Justin Squirek
0ebf09ed04 [Ada] Spurious ineffective use_clause warning
This patch fixes an issue whereby user-defined subprograms used as
generic actuals with corresponding formals containing other formal types
led to spurious ineffective use_clause warnings.

2018-09-26  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition
	to check for unmarked subprogram references coming from
	renamings.

gcc/testsuite/

	* gnat.dg/warn16.adb: New testcase.

From-SVN: r264635
2018-09-26 09:19:53 +00:00
Arnaud Charlet
cec0185c7e [Ada] Store -G xxx switches
2018-09-26  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* back_end.adb (Scan_Compiler_Arguments): Store -G xxx switches.

From-SVN: r264634
2018-09-26 09:19:47 +00:00
Yannick Moy
940cf4955f [Ada] Issue info message on inlined subprograms in GNATprove mode
Issue a positive message that inlining was performed in GNATprove mode,
when corresponding debug switch -gnatd_f is set.

2018-09-26  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* errout.ads: Update comment for insertion character '?'.
	* inline.adb: Use simple insertion character '?' for GNATprove
	info messages.
	* sem_res.adb (Resolve_Call): Issue an info message on inlining
	in GNATprove mode.

From-SVN: r264633
2018-09-26 09:19:43 +00:00
Ed Schonberg
241848fd7a [Ada] Missing front-end code for constraint checks on fixed point exprs
This patch ensures that the front-end generates constraint checks for
some operations that previously depended on gigi for the corresponding
check. The patch also resets the Do_Range_Check flag so that it never
appears in the tree presented to gigi.

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* checks.adb (Apply_Type_Conversion_Checks): Do not generate a
	range check on the expression of the conversion if it involves a
	fixed-point type, as such conversions are handled specially
	during expansion.
	* exp_ch4.adb (Expand_N_Type_Conversion): In a conversion from
	Fixed to Integer, use the base type of the expression to ensure
	that the caller will generate the proper constraint check when
	needed.

From-SVN: r264632
2018-09-26 09:19:38 +00:00
Maroua Maalej
2d9a8c0ba1 [Ada] SPARK: fix a bug related to loop exit environment
2018-09-26  Maroua Maalej  <maalej@adacore.com>

gcc/ada/

	* sem_spark.adb (Check_Loop_Statement): Fix a bug related to
	loop exit environment.
	(Check_Statement): fixing a bug when comparing the source and
	target in an assignment statement.

From-SVN: r264631
2018-09-26 09:19:33 +00:00
Hristian Kirtchev
1a409f80df [Ada] Spurious elaboration issue due to inlining
This patch ensures that the full compilation context is captured prior
to package or subprogram instantiation/inlining and restored after the
action takes place.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* sem_ch12.adb (Instantiate_Package_Body): Capture and restore
	the full compilation context.
	(Instantiate_Subprogram_Body): Capture and restore the full
	compilation context.

gcc/testsuite/

	* gnat.dg/elab7.adb, gnat.dg/elab7_pkg1.adb,
	gnat.dg/elab7_pkg1.ads, gnat.dg/elab7_pkg2.adb,
	gnat.dg/elab7_pkg2.ads: New testcase.

From-SVN: r264630
2018-09-26 09:19:28 +00:00
Yannick Moy
a30a69c122 [Ada] Do not issue by default info messages for inlining in GNATprove
Info messages about lack of inlining for analysis in GNATprove may be
confusing to users. They are now only issued when GNATprove is called
with switch --info, which it passes on to gnat2why with switch -gnatd_f.

There is no effect on compilation.

2018-09-26  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* debug.adb: Add use for -gnatd_f switch.
	* inline.adb (Cannot_Inline): Only issue info message for
	failure to inline in GNATprove mode when switch -gnatd_f is
	used.

From-SVN: r264629
2018-09-26 09:19:12 +00:00
Javier Miranda
2d9c4206c9 [Ada] Spurious error on interface conversion under ZFP
The frontend reports an error under ZFP when performing the type
conversion of a tagged object to one of its covered interface types.

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_disp.adb (Expand_Interface_Conversion): No displacement of
	the pointer needed when the type of the operand is an interface
	type that maches the target type and we are compiling under
	configurable runtime. Adding also documentation explaining why
	this cannot be done when compiling with the full runtime.
	* exp_intr.adb: Update comment.

gcc/testsuite/

	* gnat.dg/interface8.adb, gnat.dg/interface8.ads: New testcase.

From-SVN: r264628
2018-09-26 09:19:04 +00:00
Hristian Kirtchev
9d9518668b [Ada] Add a No_Return annotation to ease static analysis
2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* sem_ch5.adb (Wrap_Loop_Statement): Annotate as No_Return.

From-SVN: r264627
2018-09-26 09:18:58 +00:00
Ed Schonberg
6cd1ee98ea [Ada] Spurious error on private extension with predicate
This patch fixes a spurious error involving a private extension whose
full view includes a dynamic predicate, when the parent type is itself
private at the point of the predicate check.  The conversion is known to
be legal so no extra conversion checks are required.

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_util.adb (Make_Predicate_Call): Use OK_Convert_To when
	applying a predicate check to prevent spurious errors when
	private ancestors are involved.

gcc/testsuite/

	* gnat.dg/predicate2-containers.ads,
	gnat.dg/predicate2-project-name_values.ads,
	gnat.dg/predicate2-project-registry-attribute.ads,
	gnat.dg/predicate2-project-registry.ads,
	gnat.dg/predicate2-project-typ-set.ads,
	gnat.dg/predicate2-project-typ.ads,
	gnat.dg/predicate2-project.ads,
	gnat.dg/predicate2-source_reference.ads, gnat.dg/predicate2.ads,
	gnat.dg/predicate2_main.adb: New testcase.

From-SVN: r264626
2018-09-26 09:18:52 +00:00
Hristian Kirtchev
abbfd69841 [Ada] Spurious dependency on secondary stack
This patch reimplements the handling of the secondary stack when the
iteration scheme of a loop statement requires this support.

Prior to this modification, an iterator loop over a container was
assumed to require unconditional secondary stack management. This is
however not always true because of user-defined iterator types, where
routines First and Next return an iterator that does require the
secondary stack.

------------
-- Source --
------------

--  gnat.adc

pragma Restrictions (No_Secondary_Stack);

--  test.ads

package Test is
   type Test_Type is private
   with
      Default_Initial_Condition,
      Iterable => (First       => First_Element,
                   Next        => Next_Element,
                   Has_Element => Has_Element,
                   Element     => Element);

   type Cursor_Type is private;

   function First_Element (T : Test_Type) return Cursor_Type;

   function Next_Element (T : Test_Type; C : Cursor_Type) return Cursor_Type;

   function Has_Element (T : Test_Type; C : Cursor_Type) return Boolean;

   function Element (T : Test_Type; C : Cursor_Type) return Natural;

private
   type Cursor_Type is new Natural;

   type Test_Type is record
      null;
   end record;

   function First_Element (T : Test_Type) return Cursor_Type
   is (0);

   function Next_Element (T : Test_Type; C : Cursor_Type) return Cursor_Type
   is (0);

   function Has_Element (T : Test_Type; C : Cursor_Type) return Boolean
   is (False);

   function Element (T : Test_Type; C : Cursor_Type) return Natural
   is (0);
end Test;

--  main.adb

with Test; use Test;

procedure Main is
   F : Boolean;
   M : Test_Type;

begin
   for Elem of M loop
      null;
   end loop;

   F := (for all C of M => C = 1);
   F := (for all C in M => True);
end Main;

-----------------
-- Compilation --
-----------------

$ gnatmake -q --RTS=zfp -nostdlib main.adb

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_N_Allocator): Ensure that the use of the
	secondary stack does not clash with restriction
	No_Secondary_Stack.
	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Ensure that
	the use of the secondary stack does not clash with restriction
	No_Secondary_Stack.
	* sem_ch5.adb (Analyze_Loop_Statement): Wrap the loop in a block
	prior to analysis in order to either provide a local scope for
	an iterator, or ensure that the secondary stack is properly
	managed.
	(Check_Call): Account for the case where the tree may be
	unanalyzed or contain prior errors.
	(Has_Call_Using_Secondary_Stack): Renamed to Has_Sec_Stack_Call.
	Update all uses of the subprogram.
	(Prepare_Loop_Statement): New routine.

From-SVN: r264625
2018-09-26 09:18:35 +00:00
Javier Miranda
c886a94613 [Ada] Mimic the C++ ABI when passing class-wide conversion actuals
This patch does not affect the behavior of Ada-only code but improves
consistency with the code generated by the C++ compiler.

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Actuals): If the formal is a class-wide
	type conversion then do not skip resolving and expanding the
	conversion; required to displace the pointer to the object and
	reference the dispatch table associated with the target
	interface type.

From-SVN: r264624
2018-09-26 09:18:29 +00:00
Hristian Kirtchev
4f95defaa9 [Ada] Pair miscount in Dynamic_HTable.Put
This patch corrects the logic of GNAT.Dynamic_HTables.Dynamic_HTable.Put to
update the number of key-value pairs in the hash table only when the put is
adding a new pair, rather than updating the value of an existing pair.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* libgnat/g-dynhta.adb (Prepend_Or_Replace): Update the number
	of key-value pairs in the hash table only when adding a brand
	new pair.

gcc/testsuite/

	* gnat.dg/dynhash1.adb: New testcase.

From-SVN: r264623
2018-09-26 09:18:23 +00:00
Sergey Rybin
3e4ade66c6 [Ada] Add notes about processing of aggregate projects
2018-09-26  Sergey Rybin  <rybin@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_utility_programs.rst: Add note about
	processing of aggregate projects in gnatmetric and gnatstub.

From-SVN: r264622
2018-09-26 09:18:16 +00:00
Hristian Kirtchev
dd81163fe8 [Ada] Minor reformattings
2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* contracts.adb, exp_unst.adb, exp_util.adb, gnat1drv.adb,
	opt.ads, par-prag.adb, sem_ch3.adb, sem_ch5.adb, sem_prag.adb,
	sinfo.ads, snames.ads-tmpl: Minor reformatting.

From-SVN: r264621
2018-09-26 09:18:09 +00:00