Commit Graph

145338 Commits

Author SHA1 Message Date
H.J. Lu
fc9cf6da84 Remove UNSPEC_LOADU and UNSPEC_STOREU
Since *mov<mode>_internal and <avx512>_(load|store)<mode>_mask patterns
can handle unaligned load and store, we can remove UNSPEC_LOADU and
UNSPEC_STOREU.  We use function prototypes with pointer to scalar for
unaligned load/store builtin functions so that memory passed to
*mov<mode>_internal is unaligned.

gcc/

	PR target/69201
	* config/i386/avx512bwintrin.h (_mm512_mask_loadu_epi16): Pass
	const short * to __builtin_ia32_loaddquhi512_mask.
	(_mm512_maskz_loadu_epi16): Likewise.
	(_mm512_mask_storeu_epi16): Pass short * to
	__builtin_ia32_storedquhi512_mask.
	(_mm512_mask_loadu_epi8): Pass const char * to
	__builtin_ia32_loaddquqi512_mask.
	(_mm512_maskz_loadu_epi8): Likewise.
	(_mm512_mask_storeu_epi8): Pass char * to
	__builtin_ia32_storedquqi512_mask.
	* config/i386/avx512fintrin.h (_mm512_loadu_pd): Pass
	const double * to __builtin_ia32_loadupd512_mask.
	(_mm512_mask_loadu_pd): Likewise.
	(_mm512_maskz_loadu_pd): Likewise.
	(_mm512_storeu_pd): Pass double * to
	__builtin_ia32_storeupd512_mask.
	(_mm512_mask_storeu_pd): Likewise.
	(_mm512_loadu_ps): Pass const float * to
	__builtin_ia32_loadups512_mask.
	(_mm512_mask_loadu_ps): Likewise.
	(_mm512_maskz_loadu_ps): Likewise.
	(_mm512_storeu_ps): Pass float * to
	__builtin_ia32_storeups512_mask.
	(_mm512_mask_storeu_ps): Likewise.
	(_mm512_mask_loadu_epi64): Pass const long long * to
	__builtin_ia32_loaddqudi512_mask.
	(_mm512_maskz_loadu_epi64): Likewise.
	(_mm512_mask_storeu_epi64): Pass long long *
	to __builtin_ia32_storedqudi512_mask.
	(_mm512_loadu_si512): Pass const int * to
	__builtin_ia32_loaddqusi512_mask.
	(_mm512_mask_loadu_epi32): Likewise.
	(_mm512_maskz_loadu_epi32): Likewise.
	(_mm512_storeu_si512): Pass int * to
	__builtin_ia32_storedqusi512_mask.
	(_mm512_mask_storeu_epi32): Likewise.
	* config/i386/avx512vlbwintrin.h (_mm256_mask_storeu_epi8): Pass
	char * to __builtin_ia32_storedquqi256_mask.
	(_mm_mask_storeu_epi8): Likewise.
	(_mm256_mask_loadu_epi16): Pass const short * to
	__builtin_ia32_loaddquhi256_mask.
	(_mm256_maskz_loadu_epi16): Likewise.
	(_mm_mask_loadu_epi16): Pass const short * to
	__builtin_ia32_loaddquhi128_mask.
	(_mm_maskz_loadu_epi16): Likewise.
	(_mm256_mask_loadu_epi8): Pass const char * to
	__builtin_ia32_loaddquqi256_mask.
	(_mm256_maskz_loadu_epi8): Likewise.
	(_mm_mask_loadu_epi8): Pass const char * to
	__builtin_ia32_loaddquqi128_mask.
	(_mm_maskz_loadu_epi8): Likewise.
	(_mm256_mask_storeu_epi16): Pass short * to.
	__builtin_ia32_storedquhi256_mask.
	(_mm_mask_storeu_epi16): Pass short * to.
	__builtin_ia32_storedquhi128_mask.
	* config/i386/avx512vlintrin.h (_mm256_mask_loadu_pd): Pass
	const double * to __builtin_ia32_loadupd256_mask.
	(_mm256_maskz_loadu_pd): Likewise.
	(_mm_mask_loadu_pd): Pass onst double * to
	__builtin_ia32_loadupd128_mask.
	(_mm_maskz_loadu_pd): Likewise.
	(_mm256_mask_storeu_pd): Pass double * to
	__builtin_ia32_storeupd256_mask.
	(_mm_mask_storeu_pd): Pass double * to
	__builtin_ia32_storeupd128_mask.
	(_mm256_mask_loadu_ps): Pass const float * to
	__builtin_ia32_loadups256_mask.
	(_mm256_maskz_loadu_ps): Likewise.
	(_mm_mask_loadu_ps): Pass const float * to
	__builtin_ia32_loadups128_mask.
	(_mm_maskz_loadu_ps): Likewise.
	(_mm256_mask_storeu_ps): Pass float * to
	__builtin_ia32_storeups256_mask.
	(_mm_mask_storeu_ps): ass float * to
	__builtin_ia32_storeups128_mask.
	(_mm256_mask_loadu_epi64): Pass const long long * to
	__builtin_ia32_loaddqudi256_mask.
	(_mm256_maskz_loadu_epi64): Likewise.
	(_mm_mask_loadu_epi64): Pass const long long * to
	__builtin_ia32_loaddqudi128_mask.
	(_mm_maskz_loadu_epi64): Likewise.
	(_mm256_mask_storeu_epi64): Pass long long * to
	__builtin_ia32_storedqudi256_mask.
	(_mm_mask_storeu_epi64): Pass long long * to
	__builtin_ia32_storedqudi128_mask.
	(_mm256_mask_loadu_epi32): Pass const int * to
	__builtin_ia32_loaddqusi256_mask.
	(_mm256_maskz_loadu_epi32): Likewise.
	(_mm_mask_loadu_epi32): Pass const int * to
	__builtin_ia32_loaddqusi128_mask.
	(_mm_maskz_loadu_epi32): Likewise.
	(_mm256_mask_storeu_epi32): Pass int * to
	__builtin_ia32_storedqusi256_mask.
	(_mm_mask_storeu_epi32): Pass int * to
	__builtin_ia32_storedqusi128_mask.
	* config/i386/i386-builtin-types.def (PCSHORT): New.
	(PINT64): Likewise.
	(V64QI_FTYPE_PCCHAR_V64QI_UDI): Likewise.
	(V32HI_FTYPE_PCSHORT_V32HI_USI): Likewise.
	(V32QI_FTYPE_PCCHAR_V32QI_USI): Likewise.
	(V16SF_FTYPE_PCFLOAT_V16SF_UHI): Likewise.
	(V8DF_FTYPE_PCDOUBLE_V8DF_UQI): Likewise.
	(V16SI_FTYPE_PCINT_V16SI_UHI): Likewise.
	(V16HI_FTYPE_PCSHORT_V16HI_UHI): Likewise.
	(V16QI_FTYPE_PCCHAR_V16QI_UHI): Likewise.
	(V8SF_FTYPE_PCFLOAT_V8SF_UQI): Likewise.
	(V8DI_FTYPE_PCINT64_V8DI_UQI): Likewise.
	(V8SI_FTYPE_PCINT_V8SI_UQI): Likewise.
	(V8HI_FTYPE_PCSHORT_V8HI_UQI): Likewise.
	(V4DF_FTYPE_PCDOUBLE_V4DF_UQI): Likewise.
	(V4SF_FTYPE_PCFLOAT_V4SF_UQI): Likewise.
	(V4DI_FTYPE_PCINT64_V4DI_UQI): Likewise.
	(V4SI_FTYPE_PCINT_V4SI_UQI): Likewise.
	(V2DF_FTYPE_PCDOUBLE_V2DF_UQI): Likewise.
	(V2DI_FTYPE_PCINT64_V2DI_UQI): Likewise.
	(VOID_FTYPE_PDOUBLE_V8DF_UQI): Likewise.
	(VOID_FTYPE_PDOUBLE_V4DF_UQI): Likewise.
	(VOID_FTYPE_PDOUBLE_V2DF_UQI): Likewise.
	(VOID_FTYPE_PFLOAT_V16SF_UHI): Likewise.
	(VOID_FTYPE_PFLOAT_V8SF_UQI): Likewise.
	(VOID_FTYPE_PFLOAT_V4SF_UQI): Likewise.
	(VOID_FTYPE_PINT64_V8DI_UQI): Likewise.
	(VOID_FTYPE_PINT64_V4DI_UQI): Likewise.
	(VOID_FTYPE_PINT64_V2DI_UQI): Likewise.
	(VOID_FTYPE_PINT_V16SI_UHI): Likewise.
	(VOID_FTYPE_PINT_V8SI_UHI): Likewise.
	(VOID_FTYPE_PINT_V4SI_UHI): Likewise.
	(VOID_FTYPE_PSHORT_V32HI_USI): Likewise.
	(VOID_FTYPE_PSHORT_V16HI_UHI): Likewise.
	(VOID_FTYPE_PSHORT_V8HI_UQI): Likewise.
	(VOID_FTYPE_PCHAR_V64QI_UDI): Likewise.
	(VOID_FTYPE_PCHAR_V32QI_USI): Likewise.
	(VOID_FTYPE_PCHAR_V16QI_UHI): Likewise.
	(V64QI_FTYPE_PCV64QI_V64QI_UDI): Removed.
	(V32HI_FTYPE_PCV32HI_V32HI_USI): Likewise.
	(V32QI_FTYPE_PCV32QI_V32QI_USI): Likewise.
	(V16HI_FTYPE_PCV16HI_V16HI_UHI): Likewise.
	(V16QI_FTYPE_PCV16QI_V16QI_UHI): Likewise.
	(V8HI_FTYPE_PCV8HI_V8HI_UQI): Likewise.
	(VOID_FTYPE_PV32HI_V32HI_USI): Likewise.
	(VOID_FTYPE_PV16HI_V16HI_UHI): Likewise.
	(VOID_FTYPE_PV8HI_V8HI_UQI): Likewise.
	(VOID_FTYPE_PV64QI_V64QI_UDI): Likewise.
	(VOID_FTYPE_PV32QI_V32QI_USI): Likewise.
	(VOID_FTYPE_PV16QI_V16QI_UHI): Likewise.
	* config/i386/i386.c (ix86_emit_save_reg_using_mov): Don't
	use UNSPEC_STOREU.
	(ix86_emit_restore_sse_regs_using_mov): Don't use UNSPEC_LOADU.
	(ix86_avx256_split_vector_move_misalign): Don't use unaligned
	load nor store.
	(ix86_expand_vector_move_misalign): Likewise.
	(bdesc_special_args): Use CODE_FOR_movvNXY_internal and pointer
	to scalar function prototype for unaligned load/store builtins.
	(ix86_expand_special_args_builtin): Updated.
	* config/i386/sse.md (UNSPEC_LOADU): Removed.
	(UNSPEC_STOREU): Likewise.
	(VI_ULOADSTORE_BW_AVX512VL): Likewise.
	(VI_ULOADSTORE_F_AVX512VL): Likewise.
	(ssescalarsize): Handle V4TI, V2TI and V1TI.
	(<sse>_loadu<ssemodesuffix><avxsizesuffix><mask_name>): Likewise.
	(*<sse>_loadu<ssemodesuffix><avxsizesuffix><mask_name>): Likewise.
	(<sse>_storeu<ssemodesuffix><avxsizesuffix>): Likewise.
	(<avx512>_storeu<ssemodesuffix><avxsizesuffix>_mask): Likewise.
	(<sse2_avx_avx512f>_loaddqu<mode><mask_name>): Likewise.
	(*<sse2_avx_avx512f>_loaddqu<mode><mask_name>"): Likewise.
	(sse2_avx_avx512f>_storedqu<mode>): Likewise.
	(<avx512>_storedqu<mode>_mask): Likewise.
	(*sse4_2_pcmpestr_unaligned): Likewise.
	(*sse4_2_pcmpistr_unaligned): Likewise.
	(*mov<mode>_internal): Renamed to ...
	(mov<mode>_internal): This.  Remove check of AVX and IAMCU on
	misaligned operand.  Replace vmovdqu64 with vmovdqu<ssescalarsize>.
	(movsd/movhpd to movupd peephole): Don't use UNSPEC_LOADU.
	(movlpd/movhpd to movupd peephole): Don't use UNSPEC_STOREU.

gcc/testsuite/

	PR target/69201
	* gcc.target/i386/avx256-unaligned-store-1.c (a): Make it
	extern to force it misaligned.
	(b): Likewise.
	(c): Likewise.
	(d): Likewise.
	Check vmovups.*movv8sf_internal/3 instead of avx_storeups256.
	Don't check `*' before movv4sf_internal.
	* gcc.target/i386/avx256-unaligned-store-2.c: Check
	vmovups.*movv32qi_internal/3 instead of avx_storeups256.
	Don't check `*' before movv16qi_internal.
	* gcc.target/i386/avx256-unaligned-store-3.c (a): Make it
	extern to force it misaligned.
	(b): Likewise.
	(c): Likewise.
	(d): Likewise.
	Check vmovups.*movv4df_internal/3 instead of avx_storeupd256.
	Don't check `*' before movv2df_internal.
	* gcc.target/i386/avx256-unaligned-store-4.c (a): Make it
	extern to force it misaligned.
	(b): Likewise.
	(c): Likewise.
	(d): Likewise.
	Check movv8sf_internal instead of avx_storeups256.
	Check movups.*movv4sf_internal/3 instead of avx_storeups256.

From-SVN: r235209
2016-04-19 07:33:36 -07:00
Richard Biener
ea8927ea15 re PR tree-optimization/70171 (Poor code generated when return struct using ternary operator)
2016-04-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/70171
	* tree-ssa-phiprop.c: Include stor-layout.h.
	(phiprop_insert_phi): Handle the aggregate copy case.
	(propagate_with_phi): Likewise.

	* g++.dg/tree-ssa/pr70171.C: New testcase.

From-SVN: r235208
2016-04-19 14:03:59 +00:00
Uros Bizjak
9a81dba68a i386.c (ix86_decompose_address): Use lowpart_subreg instead of simplify_gen_subreg (...
* config/i386/i386.c (ix86_decompose_address): Use lowpart_subreg
	instead of simplify_gen_subreg (... , 0).
	(ix86_delegitimize_address): Ditto.
	(ix86_split_divmod): Ditto.
	(ix86_split_copysign_const): Ditto.
	(ix86_split_copysign_var): Ditto.
	(ix86_expand_args_builtin): Ditto.
	(ix86_expand_round_builtin): Ditto.
	(ix86_expand_special_args_builtin): Ditto.
	* config/i386/i386.md (TARGET_USE_VECTOR_FP_CONVERTS splitters): Ditto.
	(TARGET_SSE_PARTIAL_REG_DEPENDENCY splitters and peephole2s): Ditto.
	(udivmodqi4): Ditto.
	(absneg splitters): Ditto.
	(*jcc_bt<mode>_1): Ditto.

From-SVN: r235207
2016-04-19 16:01:21 +02:00
Jason Merrill
3ba065e89e re PR c++/70522 (Hidden friend functions block qualified name lookup into nested unnamed namespace)
PR c++/70522

	* name-lookup.c (qualified_lookup_using_namespace): Look through
	hidden names.

From-SVN: r235206
2016-04-19 09:40:03 -04:00
Arnaud Charlet
a017690335 standard_and_implementation_defined_restrictions.rst, [...]: Update documentation.
* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
        gnat_rm.texi: Update documentation.

From-SVN: r235205
2016-04-19 15:30:03 +02:00
Arnaud Charlet
009c026845 [multiple changes]
2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* par_sco.adb (Traverse_One, case N_Case_Statement):
	Skip pragmas before the first alternative.
	(Traverse_Handled_Statement_Sequence, Exception_Handlers): Likewise.

2016-04-19  Tristan Gingold  <gingold@adacore.com>

	* adaint.c (__gnat_lwp_self): New function (for darwin).
	* s-osinte-darwin.ads, s-osinte-darwin.adb (lwp_self): Import
	of __gnat_lwp_self.

From-SVN: r235204
2016-04-19 15:24:36 +02:00
Richard Biener
65f52ee9b9 re PR tree-optimization/70724 (Miscompiles python3 with FDO)
2016-04-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/70724
	* tree-ssa-sccvn.c (scc_vn_restore_ssa_info): Split SSA info
	restoring out from ...
	(free_scc_vn): ... here.
	* tree-ssa-sccvn.h (scc_vn_restore_ssa_info): Declare.
	* tres-ssa-pre.c (pass_pre::execute): Restore SSA info before
	tail merging.
	(pass_fre::execute): Restore SSA info.

	* gcc.dg/torture/pr70724.c: New testcase.

From-SVN: r235203
2016-04-19 13:22:19 +00:00
Olivier Hainque
27b95a6541 sem_util.adb (Build_Elaboration_Entity): Always request an elab counter when preserving control-flow.
2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* sem_util.adb (Build_Elaboration_Entity): Always request an
	elab counter when preserving control-flow.

2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* sem_ch13.adb (Build_Invariant_Procedure_Declaration): Set
	Needs_Debug_Info when producing SCOs.
	* par_sco.adb (Traverse_Aspects): Fix categorization of
	Type_Invariant to match actual processing as activated depending
	on pragma Assertion_Policy.
	* sem_prag.adb (Analyze_Pragma): Remove special case for
	Name_Invariant regarding SCO generation, which completely disabled
	the production of SCOs for Invariant pragmas and aspects.

From-SVN: r235202
2016-04-19 15:19:45 +02:00
Arnaud Charlet
b4213ffdaf [multiple changes]
2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb, sem_util.adb, sem_res.adb, sem_attr.adb: Minor
	reformatting.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Profile): Refine predicate that checks
	whether a function that returns a limited view is declared in
	another unit and cannot be frozen at this point.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Component_Count): Handle properly superflat
	arrays, i.e. empty arrays where Hi < Lo - 1, to ensure that the
	return value of the function is Natural, rather than leaving
	the handling of such arrays to the caller of this function.

From-SVN: r235200
2016-04-19 15:10:35 +02:00
Arnaud Charlet
b314303784 [multiple changes]
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb, sem_attr.adb, par-prag.adb, exp_aggr.adb, sem_type.adb
	sem_ch12.adb, sem_ch3.adb, exp_ch7.adb, exp_ch9.adb: Code cleanup.
	* sem_res.adb, sem_util.ads, sem_util.adb (Is_OK_Volatile_Context):
	Promoted from being a nested subprogram in Sem_Res.Resolve_Entity_Name
	to publicly visible routine in Sem_Util.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Parameter_Aliasing_Checks): Do not apply
	the check if the type of the actual is By_Reference.

From-SVN: r235199
2016-04-19 15:09:07 +02:00
Arnaud Charlet
e90e9503df sem_res.adb (Within_Subprogram_Call): Detect also nodes that appear in entry calls.
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Within_Subprogram_Call): Detect
	also nodes that appear in entry calls.
	(Resolve_Actuals, Insert_Default): Propagate
	dimension information if any, from default expression to the
	copy that appears in the list of actuals.
	* uintp.ads: minor whitespace fix in comment.
	* sem_prag.adb, stringt.adb, inline.adb, lib-xref-spark_specific.adb:
	Minor code cleanup.
	* set_targ.adb (Set_Targ): convert directly from
	Natural to Pos, without intermediate conversion to Int.

From-SVN: r235197
2016-04-19 15:06:01 +02:00
Arnaud Charlet
db7e372172 sem_ch6.adb (Process_Formals): Mark suspicious reference to SPARK RM in comment.
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch6.adb (Process_Formals): Mark suspicious reference to
	SPARK RM in comment.
	* sem_prag.adb (Analyze_Global_Item): Fix reference to SPARK RM
	in comment.
	* sem_res.adb (Property_Error, Resolve_Actuals): Fix reference
	to SPARK RM in both comment and error message.

From-SVN: r235196
2016-04-19 15:03:49 +02:00
Eric Botcazou
681014998b sem_ch6.adb (Possible_Freeze): If the type is an incomplete CW type...
2016-04-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Possible_Freeze): If the type is an incomplete
	CW type, then the subprogram must have a delayed freeze. This
	ensures that the backend can properly recover the full view when
	elaborating the access subprogram declaration.

From-SVN: r235195
2016-04-19 15:02:27 +02:00
Arnaud Charlet
16e764a7f4 [multiple changes]
2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Resolve_Attribute, case 'Access): Freeze
	overloadable entity if originally overloaded.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb, exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_code.adb,
	exp_fixd.adb, namet.adb, osint.adb, osint.ads, par-ch2.adb,
	sem_ch10.adb, sem_ch12.adb, sem_disp.adb, sem_elab.adb, sem_elim.adb
	sem_util.adb, styleg.adb, styleg.ads, stylesw.ads: Minor code
	clean up.

From-SVN: r235194
2016-04-19 14:59:27 +02:00
Arnaud Charlet
4754d4e86a sem_util.adb (Copy_Node_With_Replacement): use Set_Comes_From_Source instead of directly manipulating internals of the...
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Copy_Node_With_Replacement):
	use Set_Comes_From_Source instead of directly manipulating
	internals of the node table.
	* sem_util.adb (Within_Scope): refactored to remove duplicated code.
	* sem_aux.adb (Get_Rep_Pragma,
	Subprogram_Body_Entity, Subprogram_Spec): declare variables that
	do not change as constants and initialize them in the declaration.
	(Get_Rep_Pragma, Subprogram_Body_Entity, Subprogram_Spec): declare
	variables that do not change as constants and initialize them
	in the declaration.

From-SVN: r235193
2016-04-19 14:24:29 +02:00
Arnaud Charlet
87fd683607 [multiple changes]
2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): If the entry has
	preconditions it is rewritten by means of a wrapper that
	incorporates the original call. Before rewriting generate a
	reference to the entry being called to prevent spurious warnings
	and provide correct cross-reference information.

2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_disp.adb (Check_Dispatching_Context): Code cleanup. Add
	local constant Scop. Ignore any internally generated loops when
	performing the check concerning an abstract subprogram call
	without a controlling argument.
	* sem_util.ads, sem_util.adb (Current_Scope_No_Loops): New routine.

From-SVN: r235192
2016-04-19 14:22:12 +02:00
Arnaud Charlet
b35e5dcb14 [multiple changes]
2016-04-19  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_A_Call): There are cases where we have No
	(Ent) after the Alias loop, even when there was no previous error,
	so we can't assert that there was an error.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Access_Attribute, OK_Self_Reference):
	Reject use of type name as a prefix to 'access within an aggregate
	in a context that is not the declarative region of a type.

2016-04-19  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Make "gnat ls -P" invoke gprls Make "gnat bind
	-P" invoke "gprbuild -b" Make "gnat link -P" invoke "gprbuild
	-l" Fail if the invocation is "gnat find -P" or "gnat xref -P"
	Remove anything related to project files
	* g-mbdira.adb: minor whitespace cleanup
	* g-spipat.adb: minor removal of extra spaces after closing paren

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals):  If post-statements are present
	and the enclosing context is a function call or indexing, build
	an Expression_With_Actions for the call.

2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-writ.adb (Write_With_Lines): Code cleanup. Do not generate
	a with line for an ignored Ghost unit.
	* sem_ch7.adb (Analyze_Package_Declaration): Add local constant
	Par. A child package is Ghost when its parent is Ghost.
	* sem_prag.adb (Analyze_Pragma): Pragma Ghost can now apply to
	a subprogram declaration that acts as a compilation unit.

From-SVN: r235191
2016-04-19 14:18:59 +02:00
Richard Biener
d247f8e23a gimple-walk.h (struct walk_stmt_info): Add stmt member.
2016-04-19  Richard Biener  <rguenther@suse.de>

	* gimple-walk.h (struct walk_stmt_info): Add stmt member.
	* gimple-walk.c (walk_gimple_op): Initialize it.
	(walk_gimple_asm): Set wi->is_lhs before each callback invocation.
	* tree-inline.c (remap_gimple_op_r): Set SSA_NAME_DEF_STMT when
	remapping SSA names of defs.
	(copy_bb): Remove walk over all SSA defs and SSA_NAME_DEF_STMT
	adjustment.

From-SVN: r235190
2016-04-19 12:13:04 +00:00
Vladimir Makarov
987b67f17c re PR middle-end/70689 (ICE on valid code at -O1 in 32-bit mode on x86_64-linux-gnu in curr_insn_transform, at lra-constraints.c:3564)
2016-04-18  Vladimir Makarov  <vmakarov@redhat.com>

	PR middle-end/70689
	* lra-constraints.c (equiv_substition_p): New.
	(process_alt_operands): Use it.
	(swap_operands): Swap it.
	(curr_insn_transform): Update it.

2016-04-18  Vladimir Makarov  <vmakarov@redhat.com>

	PR middle-end/70689
	* testsuite/gcc.target/i386/pr70689.c: New.

From-SVN: r235184
2016-04-19 02:49:54 +00:00
GCC Administrator
cd1c4ba811 Daily bump.
From-SVN: r235182
2016-04-19 00:16:20 +00:00
Michael Matz
fe37c7afd1 tree.h (TYPE_ALIGN, DECL_ALIGN): Return shifted amount.
* tree.h (TYPE_ALIGN, DECL_ALIGN): Return shifted amount.
	(SET_TYPE_ALIGN, SET_DECL_ALIGN): New.
	* tree-core.h (tree_type_common.align): Use bit-field.
	(tree_type_common.spare): New.
	(tree_decl_common.off_align): Make smaller.
	(tree_decl_common.align): Use bit-field.

	* expr.c (expand_expr_addr_expr_1): Use SET_TYPE_ALIGN.
	* omp-low.c (install_var_field): Use SET_DECL_ALIGN.
	(scan_sharing_clauses): Ditto.
	(finish_taskreg_scan): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(omp_finish_file): Ditto.
	* stor-layout.c (do_type_align): Use SET_DECL_ALIGN.
	(layout_decl): Ditto.
	(relayout_decl): Ditto.
	(finalize_record_size): Use SET_TYPE_ALIGN.
	(finalize_type_size): Ditto.
	(finish_builtin_struct): Ditto.
	(layout_type): Ditto.
	(initialize_sizetypes): Ditto.
	* targhooks.c (std_gimplify_va_arg_expr): Use SET_TYPE_ALIGN.
	* tree-nested.c (insert_field_into_struct): Use SET_TYPE_ALIGN.
	(lookup_field_for_decl): Use SET_DECL_ALIGN.
	(get_chain_field): Ditto.
	(get_trampoline_type): Ditto.
	(get_nl_goto_field): Ditto.
	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use
	SET_DECL_ALIGN.
	(unpack_ts_type_common_value_fields): Use SET_TYPE_ALIGN.
	* gimple-expr.c (copy_var_decl): Use SET_DECL_ALIGN.
	* tree.c (make_node_stat): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(build_qualified_type): Use SET_TYPE_ALIGN.
	(build_aligned_type, build_range_type_1): Ditto.
	(build_atomic_base): Ditto.
	(build_common_tree_nodes): Ditto.
	* cfgexpand.c (align_local_variable): Use SET_DECL_ALIGN.
	(expand_one_stack_var_at): Ditto.
	* coverage.c (build_var): Use SET_DECL_ALIGN.
	* except.c (init_eh): Ditto.
	* function.c (assign_parm_setup_block): Ditto.
	* symtab.c (increase_alignment_1): Ditto.
	* tree-ssa-ccp.c (fold_builtin_alloca_with_align): Ditto.
	* tree-vect-stmts.c (ensure_base_align): Ditto.
	* varasm.c (align_variable): Ditto.
	(assemble_variable): Ditto.
	(build_constant_desc): Ditto.
	(output_constant_def_contents): Ditto.

	* config/arm/arm.c (arm_relayout_function): Use SET_DECL_ALIGN.
	* config/avr/avr.c (avr_adjust_type_node): Use SET_TYPE_ALIGN.
	* config/mips/mips.c (mips_std_gimplify_va_arg_expr): Ditto.
	* config/msp430/msp430.c (msp430_gimplify_va_arg_expr): Ditto.
	* config/spu/spu.c (spu_build_builtin_va_list): Use SET_DECL_ALIGN.

ada/
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use SET_TYPE_ALIGN.
	(gnat_to_gnu_field): Ditto.
	(components_to_record): Ditto.
	(create_variant_part_from): Ditto.
	(copy_and_substitute_in_size): Ditto.
	(substitute_in_type): Ditto.
	* gcc-interface/utils.c (make_aligning_type): Use SET_TYPE_ALIGN.
	(make_packable_type): Ditto.
	(maybe_pad_type): Ditto.
	(finish_fat_pointer_type): Ditto.
	(finish_record_type): Ditto and use SET_DECL_ALIGN.
	(rest_of_record_type_compilation): Use SET_TYPE_ALIGN.
	(create_field_decl): Use SET_DECL_ALIGN.

c-family/
	* c-common.c (handle_aligned_attribute): Use SET_TYPE_ALIGN
	and SET_DECL_ALIGN.

c/
	* c-decl.c (merge_decls): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(grokdeclarator, parser_xref_tag, finish_enum): Use SET_TYPE_ALIGN.

cp/
	* class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(layout_class_type): Ditto.
	(build_base_field): Use SET_DECL_ALIGN.
	(fixup_attribute_variants): Use SET_TYPE_ALIGN.
	* decl.c (duplicate_decls): Use SET_DECL_ALIGN.
	(record_unknown_type): Use SET_TYPE_ALIGN.
	(cxx_init_decl_processing): Ditto.
	(copy_type_enum): Ditto.
	(grokfndecl): Use SET_DECL_ALIGN.
	(copy_type_enum): Use SET_TYPE_ALIGN.
	* pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
	(tsubst): Ditto.
	* tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
	* lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
	* method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
	* rtti.c (emit_tinfo_decl): Ditto.

fortran/
	* trans-io.c (gfc_build_io_library_fndecls): Use SET_TYPE_ALIGN.
	* trans-common.c (build_common_decl): Use SET_DECL_ALIGN.
	* trans-types.c (gfc_add_field_to_struct): Use SET_DECL_ALIGN.

go/
	* go-gcc.cc (Gcc_backend::implicit_variable): Use SET_DECL_ALIGN.

java/
	* class.c (add_method_1): Use SET_DECL_ALIGN.
	(make_class_data): Ditto.
	(emit_register_classes_in_jcr_section): Ditto.
	* typeck.c (build_java_array_type): Ditto.

objc/
	* objc-act.c (objc_build_struct): Use SET_DECL_ALIGN.

libcc1/
	* plugin.cc (plugin_finish_record_or_union): Use SET_TYPE_ALIGN.

From-SVN: r235172
2016-04-18 20:36:27 +00:00
H.J. Lu
91a47c39bf Optimize load double into xmm with zero_extend
"movq" should used to load double into xmm register with zero_extend:

(set (reg:V2DF 90)
     (vec_concat:V2DF (reg/v:DF 88 [ d ])
                      (const_double:DF 0.0 [0x0.0p+0])))

Unlike "movsd", which only works with load from memory, "movq" works
with both memory and xmm register.

gcc/

	PR target/70708
	* config/i386/sse.md (sse2_loadlpd): Accept load from "xm" and
	replace %vmovsd with "%vmovq".
	(vec_concatv2df): Likewise.

gcc/testsuite/

	PR target/70708
	* gcc.target/i386/pr70708.c: New test.

From-SVN: r235169
2016-04-18 12:40:30 -07:00
Jason Merrill
81c160c6f3 re PR c++/70690 (r235002 miscompiles tcmalloc)
PR c++/70690

	PR c++/70528
	* class.c (type_maybe_constexpr_default_constructor): New.
	(type_has_constexpr_default_constructor): Revert.

From-SVN: r235165
2016-04-18 15:00:00 -04:00
Uros Bizjak
827f44ebeb mmx.md (*vec_extractv2sf_0): Use gen_lowpart.
* config/i386/mmx.md (*vec_extractv2sf_0): Use gen_lowpart.
	(*vec_extractv2si_0): Ditto.
	* config/i386/sse.md (*vec_extractv4sf_0): Ditto.
	(zero_extended_scalar_load_operand splitters): Ditto.
	(vec_extract splitters): Ditto.
	(*vec_extractv4si_0_zext): Ditto.
	(avx_<castmode><avxsizesuffix>_<castmode>): Use gen_lowpart
	and lowpart_subreg.
	(avx512f_<castmode><avxsizesuffix>_<castmode>): Ditto.
	(avx512f_<castmode><avxsizesuffix>_256<castmode>): Ditto.
	(*sse4_1_extractps): Use lowpart_subreg.

From-SVN: r235164
2016-04-18 20:52:47 +02:00
Rainer Orth
a8430f1914 Update install.texi for GCC 6 on Solaris
* doc/install.texi (Specific, i?86-*-solaris2.10): Update gas and
	gld requirements.
	(Specific, *-*-solaris2*): Update Solaris 11 bundled gcc
	versions.
	Mention Solaris 11 packaging changes.
	Update gas and gld requirements.
	Remove reference to pre-Solaris 10 bug.
	(Specific, sparc-sun-solaris2*): Remove reference to pre-Solaris 10
	systems and bugs.
	(Specific, sparc64-*-solaris2*): Remove reference to bootstrap
	with cc.

From-SVN: r235162
2016-04-18 18:39:03 +00:00
Jonathan Wakely
0cded43df4 PR libstdc++/41759 reword static assertions in <random>
PR libstdc++/41759
	* include/bits/random.h: Reword static assertion messages to state
	positive conditions.
	* include/bits/random.tcc: Likewise.
	* include/bits/uniform_int_dist.h: Likewise.
	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
	patterns.

From-SVN: r235160
2016-04-18 19:03:50 +01:00
Jan Hubicka
fa519ca610 tree-ssa-loop-ivopts.c (avg_loop_niter): Use also max_loop_iterations_int.
* tree-ssa-loop-ivopts.c (avg_loop_niter): Use also
	max_loop_iterations_int.

From-SVN: r235158
2016-04-18 17:16:27 +00:00
Jonathan Wakely
90751aa731 Remove unused typedefs in std::bind types
* include/std/function (_Bind, _Bind_result): Remove unused typedefs.

From-SVN: r235157
2016-04-18 17:37:56 +01:00
Jonathan Wakely
351a5f8142 * config/cpu/sh/atomicity.h: Fix typo in comment.
From-SVN: r235156
2016-04-18 17:19:25 +01:00
Jonathan Wakely
b05cf382e0 Define std:🧵:id comparison operators at namespace-scope
From-SVN: r235155
2016-04-18 17:16:14 +01:00
Jonathan Wakely
4ed6e52446 Make use of extensions more explicit in libstdc++ tests
* testsuite/18_support/bad_exception/23591_thread-1.c: Add
	-Wno-pedantic to dg-options.
	* testsuite/20_util/align/2.cc: Use type as operand of alignof.
	* testsuite/20_util/is_floating_point/value.cc: Add -Wno-pedantic
	to dg-options.
	* testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc:
	Remove extra semi-colon.
	* testsuite/23_containers/array/tuple_interface/tuple_element.cc:
	Always supply second argument to static_assert.
	* testsuite/25_algorithms/lower_bound/no_operator_ne.cc: Remove extra
	semi-colon.
	* testsuite/26_numerics/complex/c99.cc: Add -Wno-pedantic to
	dg-options.
	* testsuite/26_numerics/complex/literals/values.cc: Likewise.
	* testsuite/29_atomics/atomic/60695.cc: Likewise.
	* testsuite/29_atomics/atomic/62259.cc: use __alignof__ instead of
	alignof when operand is an object not a type.
	* testsuite/decimal/ctor.cc: Add -Wno-pedantic to dg-options.
	* testsuite/decimal/make-decimal.cc: Likewise.
	* testsuite/experimental/type_traits/value.cc: Always supply second
	argument to static_assert.
	* testsuite/util/testsuite_common_types.h: Use __extension__ for
	__int128 types.

From-SVN: r235154
2016-04-18 16:44:25 +01:00
Jonathan Wakely
abb6e0a19d Don't include internal header in libstdc++ tests
* testsuite/experimental/type_erased_allocator/1.cc: Don't include
	internal header.
	* testsuite/experimental/type_erased_allocator/1_neg.cc: Likewise.
	* testsuite/experimental/type_erased_allocator/2.cc: Likewise.
	* testsuite/experimental/type_erased_allocator/uses_allocator.cc:
	Likewise. Add licence and change to compile-only test.

From-SVN: r235153
2016-04-18 16:44:16 +01:00
Jonathan Wakely
6b6147dd48 Add attribute((unused)) in libstdc++ headers
* include/bits/locale_facets.h (ctype::do_narrow): Add attribute to
	unused parameter.
	* include/bits/regex_automaton.h (_NFA::_M_insert_alt): Likewise.

From-SVN: r235152
2016-04-18 16:44:12 +01:00
Jonathan Wakely
8dc1e574ae Avoid -Wsign-compare warnings in std::to_string()
* include/ext/string_conversions.h (__stoa): Avoid -Wsign-compare
        warnings.

From-SVN: r235151
2016-04-18 16:43:50 +01:00
Richard Biener
8270b82dd6 re PR tree-optimization/43434 (Missed vectorization: "not vectorized: data ref analysis": pointer incremented by a parameter)
2016-04-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/43434
	* tree-ssa-structalias.c (struct vls_data): New.
	(visit_loadstore): Handle all pointer-based accesses.
	(compute_dependence_clique): Compute a bitmap of restrict tags
	assigned bases and pass it to visit_loadstore.

	* gcc.dg/vect/pr43434.c: New testcase.
	* c-c++-common/goacc/kernels-alias-3.c: Adjust.
	* c-c++-common/goacc/kernels-alias-4.c: Likewise.
	* c-c++-common/goacc/kernels-alias-5.c: Likewise.
	* c-c++-common/goacc/kernels-alias-6.c: Likewise.
	* c-c++-common/goacc/kernels-alias-7.c: Likewise.
	* c-c++-common/goacc/kernels-alias-8.c: Likewise.
	* gcc.dg/gomp/pr68640.c: Likewise.
	* gfortran.dg/goacc/kernels-alias-3.f95: Likewise.
	* gfortran.dg/goacc/kernels-alias-4.f95: Likewise.

From-SVN: r235147
2016-04-18 13:09:53 +00:00
Arnaud Charlet
be0355585f [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* einfo.adb (Overridden_Operation): assert that
	function is called for valid arguments.
	* sem_aggr.adb, sem_ch3.adb, sem_ch5.adb, sem_type.adb,
	s-osinte-vxworks.ads, a-ngcefu.adb, sem_ch10.adb, einfo.ads,
	sem_prag.adb, sem_ch12.adb, sem.adb, i-cobol.ads, freeze.adb,
	sem_util.adb, a-chtgop.ads, s-rannum.adb, exp_ch6.adb, s-bignum.adb,
	s-osinte-freebsd.ads, par-ch5.adb, a-chtgbo.ads, a-cofove.adb:
	No space after closing parenthesis except where required for
	layout.
	* sem_res.adb: Minor reformatting.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Convert into a case
	statement when relevant.

2016-04-18  Bob Duff  <duff@adacore.com>

	* a-cuprqu.adb (Enqueue): Properly handle the
	case where the new element has a unique priority.

2016-04-18  Tristan Gingold  <gingold@adacore.com>

	* adaint.h: Define stat structures and functions for iOS
	simulator.

From-SVN: r235146
2016-04-18 14:58:22 +02:00
Arnaud Charlet
9d4f983251 [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): reset
	Is_Overloaded flag after resolving calls to overloaded protected
	operations.
	* exp_spark.adb (Expand_SPARK): call
	Qualify_Entity_Names for tasking nodes, i.e. protected types,
	task types and entries.
	* exp_ch4.adb (Expand_N_If_Expression): Refine previous change
	in case of an unconstrained type.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_eval.adb, sem_eval.ads (Check_Non_Static_Context): Add
	comment to document usage of subprogram in GNATprove.

From-SVN: r235145
2016-04-18 14:53:35 +02:00
Arnaud Charlet
a65dcb0d6e [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Test_Case): Improve error
	message for wrong placement of aspect Test_Case.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads: Update the documentation of attribute Renamed_Object.
	* exp_spark.adb (Expand_Potential_Renaming): Reimplemented.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Optimize_Length_Comparison): Return immediately
	in the case of AAMP (same as for use of the -gnatd.P switch) to
	suppress this optimization, which avoids creating a dependence
	on the 64-bit arithmetic package.

From-SVN: r235144
2016-04-18 14:48:42 +02:00
Arnaud Charlet
7b3ccbbf0e Minor editing.
From-SVN: r235143
2016-04-18 14:47:22 +02:00
Arnaud Charlet
7548f2cb23 [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb: Update comment.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Expand_Call): Make sure instantiations are
	registered only once as pending here.

From-SVN: r235142
2016-04-18 14:47:02 +02:00
Arnaud Charlet
f916243bde [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb, gnat1drv.adb, opt.ads, sem_res.adb
	(Minimize_Expression_With_Actions): New flag.
	(Adjust_Global_Switches): Set Minimize_Expression_With_Actions
	when generating C.
	(Resolve_Short_Circuit): Redo previous change
	using Minimize_Expression_With_Actions.
	(Expand_N_If_Expression,
	Expand_Short_Circuit_Operator): Restore old code to avoid
	Expression_With_Actions when Minimize_Expression_With_Actions
	is set.

2016-04-18  Vincent Celier  <celier@adacore.com>

	* s-os_lib.adb (Non_Blocking_Spawn, version with Stdout_File and
	Stderr_File): Close local file descriptors when no longer needed.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Remove SPARK
	mode check that the type of the cursor in an iteration over
	a formal container is not volatile. The proper check on the
	element type is done elsewhere.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): Do not set a delay freeze on
	a subprogram that returns a class-wide type, if the subprogram
	is a compilation unit, because otherwise gigi will treat the
	subprogram as external, leading to link errors.

From-SVN: r235141
2016-04-18 14:44:01 +02:00
Arnaud Charlet
22071092ed sem_res.adb (Resolve_Short_Circuit): Do not use expression-with-actions when generating C.
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Resolve_Short_Circuit): Do not use
	expression-with-actions when generating C.

From-SVN: r235140
2016-04-18 14:41:08 +02:00
Arnaud Charlet
ad81cb782b [multiple changes]
2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Apply_Compile_Time_Constraint_Error): Do not generate
	raise node in GNATprove mode.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-fileio.adb: Minor reformatting.
	* sem_prag.adb (Analyze_Input_Item): Add local
	variable Input_OK. Do not consider mappings of generic formal
	parameters to actuals.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Get_Cursor_Type): If iterator type is a derived
	type, the cursor is declared in the scope of the parent type.
	(Analyze_Parameter_Specification): A qualified expression with an
	iterator type indicates an iteration over a container (explicit
	or implicit).

From-SVN: r235139
2016-04-18 14:39:36 +02:00
Arnaud Charlet
520c0201eb [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* osint-c.ads, osint-c.adb (Delete_C_File, Delete_H_File): New.
	* gnat1drv.adb (Gnat1drv): Delete old C files before regenerating them.
	* debug.adb: Reserve -gnatd.4 to force generation of C files.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_eval.adb (Eval_Arithmetic_Op): Do not issue error on static
	division by zero, instead possibly issue a warning.
	* sem_res.adb (Resolve_Arithmetic_Op): Do not issue error on
	static division by zero, instead add check flag on original
	expression.
	* sem_util.adb, sem_util.ads (Compile_Time_Constraint_Error):
	Only issue error when both SPARK_Mode is On and Warn is False.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Force
	warning instead of error when SPARK_Mode is On, on index out of
	bounds, and set check flag for GNATprove.

From-SVN: r235138
2016-04-18 14:33:46 +02:00
Arnaud Charlet
274c2cda3e [multiple changes]
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_In_Out_States.Check_Constituent_Usage):
	Update the comment on usage.  Reimplemented.
	(Check_Input_States.Check_Constituent_Usage): Update the comment
	on usage. A Proof_In constituent can now refine an Input state
	as long as there is at least one Input constituent present.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Inline_Pragma): Use the Sloc of the
	body id as the sloc of the entity in the generated subprogram
	declaration, to avoid spurious conformance errors when style
	checks are enabled.

From-SVN: r235137
2016-04-18 14:30:55 +02:00
Arnaud Charlet
a6363ed30e [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component, Has_Dereference):
	Refine check on illegal calls to entities within a task body,
	when the entity is declared in an object of the same type. In
	a generic context there might be no explicit dereference but if
	the prefix includes an access type the construct is legal.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* rtsfind.ads, rtsfind.adb (RE_Id, RE_Unit_Table): add
	RE_Default_Priority.

2016-04-18  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Check_Arg_Is_Local_Name): Don't do the check
	if the pragma came from an aspect specification.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* gnat1drv.adb, contracts.adb: Minor reformatting and wording fixes.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): To suppress
	superfluous conformance check on an inlined body with a previous
	spec, use the fact that the generated declaration does not come
	from source. We must treat the entity as coming from source to
	enable some back-end inlining when pragma appears after the body.

From-SVN: r235136
2016-04-18 14:29:53 +02:00
Arnaud Charlet
4afcf3a5a0 [multiple changes]
2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* lib-xref-spark_specific.adb, par-ch2.adb, errout.ads,
	exp_intr.adb: Minor reformatting and typo corrections.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Code cleanup.

2016-04-18  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb: Minor reformatting and error message tweaking
	(remove extraneous spaces).

2016-04-18  Johannes Kanig  <kanig@adacore.com>

	* gnat1drv.adb (Gnat1drv): Force loading of System unit for SPARK.

2016-04-18  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Fopen_Mode): If Mode = Out_File, and the file
	exists, and it's a fifo, we use "w" as the open string instead of
	"r+". This is necessary to make a write to the fifo block until
	a reader is ready.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Denote_Same_Function): Account
	for a special case where a primitive of a tagged type inherits
	a class-wide postcondition from a parent type.

From-SVN: r235135
2016-04-18 14:27:10 +02:00
Hristian Kirtchev
58ba241591 par-ch2.adb (P_Expression_Or_Reserved_Word): New routine.
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch2.adb (P_Expression_Or_Reserved_Word): New routine.
	(P_Pragma): Signal Scan_Pragma_Argument_Association when the use
	of reserved words is OK.
	(Scan_Pragma_Argument_Association):
	Add new formal Reserved_Words_OK and update the comment on
	usage. Code cleanup. Parse an expression or a reserved word in
	identifier form for pragmas Restriction_Warnings and Restrictions
	No_Use_Of_Attribute.
	* restrict.adb (Check_Restriction_No_Use_Of_Attribute):
	Reimplemented.	(Check_Restriction_No_Use_Of_Pragma): Code cleanup.
	(Set_Restriction_No_Specification_Of_Aspect): Properly set the warning
	flag for an aspect.
	(Set_Restriction_No_Use_Of_Attribute): Properly set the warning
	flag for an attribute.	(Set_Restriction_No_Use_Of_Entity):
	Update the parameter profile.
	(Set_Restriction_No_Use_Of_Pragma): Properly set the warning flag for
	a pragma.
	* restrict.ads (Check_Restriction_No_Use_Of_Attribute): Update
	the comment on usage.
	(Set_Restriction_No_Use_Of_Entity): Update the parameter profile.
	* sem_attr.adb (Analyze_Attribute): Check restriction
	No_Use_Of_Attribute.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Check
	restriction No_Use_Of_Attribute before any rewritings have
	taken place.
	* sem_prag.adb (Analyze_Pragma): Check restriction
	No_Use_Of_Pragma before any rewritings have taken place.

From-SVN: r235134
2016-04-18 14:18:16 +02:00
Matthew Wahab
95e01976cb re PR target/70711 (GCC ARM big-endian ARMv8.1 code fails.)
PR target/70711
	* config/arm/bpabi.h (BE8_LINK_SPEC): Add entries for armv8+crc,
	armv8.1-a and armv8.1-a+crc.

From-SVN: r235132
2016-04-18 12:11:03 +00:00
Richard Biener
edd048e29a re PR tree-optimization/70701 (incomplete value numbering when memcpy-ing from array)
2016-04-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/70701
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Resolve fully constant
	references after translating through a memcpy.

	* gcc.dg/tree-ssa/ssa-fre-53.c: New testcase.

From-SVN: r235131
2016-04-18 11:39:04 +00:00