Commit Graph

145601 Commits

Author SHA1 Message Date
H.J. Lu
6048e2ed5e Remove ssememalign
From INSTRUCTION EXCEPTION SPECIFICATION section in Intel software
developer manual volume 2, only legacy SSE instructions with memory
operand not 16-byte aligned get General Protection fault.  There is
no need to check 1, 2, 4, 8 byte alignments.  Since x86 backend has
accurate constraints and predicates for 16-byte alignment, we can
remove alignment check in ix86_legitimate_combined_insn.

	* config/i386/i386.c (ix86_legitimate_combined_insn): Remove
	alignment check.
	* config/i386/i386.md (ssememalign): Removed.
	* config/i386/sse.md: Remove ssememalign attribute from patterns.

From-SVN: r235224
2016-04-19 15:39:28 -07:00
Ben Elliston
14f0f2fc44 libjava.exp (libjava_arguments): Use 'file normalize' rather than the defunct DejaGnu 'absolute' proc.
* testsuite/lib/libjava.exp (libjava_arguments): Use 'file
	normalize' rather than the defunct DejaGnu 'absolute' proc.

From-SVN: r235222
2016-04-20 07:08:47 +10:00
Jason Merrill
76f3944041 PR c++/66543 - -Wunused-but-set* false positives
* expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR.
	* pt.c (make_pack_expansion): Call mark_exp_read.
	* semantics.c (finish_id_expression): Call mark_type_use in
	unevaluated context.

From-SVN: r235221
2016-04-19 15:30:22 -04:00
Jerry DeLisle
90eeab20f7 re PR libfortran/70684 (incorrect reading of values from file on Windows)
2016-04-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/70684
	* io/list_read (check_buffers): Add '\r' to check for end of line.
	factor.

	* gfortran.dg/list_read_14.f90: New test.

From-SVN: r235220
2016-04-19 19:24:28 +00:00
Jason Merrill
218e9dde70 DR 2137 - copy-constructor rank in list-initialization
* call.c (implicit_conversion): If we choose a copy constructor
	for list-initialization from the same type, the conversion is an
	exact match.

From-SVN: r235219
2016-04-19 14:50:08 -04:00
Jason Merrill
06ec22b7f6 Improve constexpr handling of other loop forms.
* constexpr.c (breaks): Handle EXIT_EXPR.
	(cxx_eval_loop_expr): Handle COMPOUND_EXPR body.
	(cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling
	of COMPOUND_EXPR.

From-SVN: r235218
2016-04-19 14:50:01 -04:00
Jason Merrill
f937929e9b PR c++/68206 - Fix constexpr diagnostics with loops.
PR c++/68530
	* constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
	and GOTO_EXPR.

From-SVN: r235217
2016-04-19 14:49:54 -04:00
Jonathan Wakely
29ca91f72e libstdc++/69703 ignore endianness in codecvt_utf8
PR libstdc++/69703
	* src/c++11/codecvt.cc (__codecvt_utf8_base<char16_t>::do_in)):
	Override endianness bit in mode.
	* testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: New test.
	* testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc: Test
	that little_endian mode is ignored.
	* testsuite/experimental/filesystem/path/native/string.cc: New test.

From-SVN: r235216
2016-04-19 19:02:46 +01:00
Jonathan Wakely
1490525104 libstdc++/70609 fix filesystem::copy()
PR libstdc++/70609
	* src/filesystem/ops.cc (close_fd): New function.
	(do_copy_file): Set permissions before copying file contents. Check
	result of closing file descriptors. Don't copy streambuf when file
	is empty.
	(copy(const path&, const path&, copy_options, error_code&)): Use
	lstat for source file when copy_symlinks is set.
	* testsuite/experimental/filesystem/operations/copy.cc: Test copy().

From-SVN: r235215
2016-04-19 19:02:39 +01:00
Jonathan Wakely
9c476ad426 Add noexcept to Filesystem TS operators
* include/experimental/bits/fs_fwd.h (operator&, operator|, operator^,
	operator~ operator&=, operator|=, operator^=): Add noexcept to
	overloaded operators for copy_options, perms and directory_options.
	* src/filesystem/ops.cc (make_file_type, make_file_status,
	is_not_found_errno, file_time): Add noexcept.

From-SVN: r235214
2016-04-19 19:02:32 +01:00
Jason Merrill
b1e47084d3 Tiny C++ cleanups.
* pt.c (tsubst_expr): Remove shadowing declaration.
	(tsubst_pack_expansion): Add assert.
	* semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.

From-SVN: r235213
2016-04-19 13:49:34 -04:00
H.J. Lu
831698b8f7 Allocate memory on cache line if requested
Since GTM::gtm_thread has

gtm_thread *next_thread __attribute__((__aligned__(HW_CACHELINE_SIZE)));

GTM::gtm_thread::operator new () calls xmalloc with separate_cl == true.
xmalloc must return memory on cache line in this case.

	PR libitm/70456
	* util.cc (xmalloc): Use posix_memalign to allocate memory on
	on cache line if requested.

From-SVN: r235211
2016-04-19 10:01:11 -07:00
Edward Smith-Rowland
d855ad89cb c++14_warning.h: Do not refer C++14 as experimental.
2016-04-19  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* include/bits/c++14_warning.h: Do not refer C++14 as experimental.

From-SVN: r235210
2016-04-19 16:29:05 +00:00
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