1. 20 Apr, 2016 8 commits
    • [multiple changes] · 93e90bf4
      2016-04-20  Gary Dismukes  <dismukes@adacore.com>
      
      	* par_sco.adb, sem_util.adb, sem_ch13.adb: Minor typo corrections and
      	reformatting.
      
      2016-04-20  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_prag.adb (Analyze_Pragma, case Default_Storage_Pool):
      	If the pragma comes from an aspect specification, verify that
      	the aspect applies to an entity with a declarative part.
      	* exp_ch5.adb: Code cleanup.
      
      2016-04-20  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_res.adb (Resolve_If_Expression): If first expression is
      	universal, resolve subsequent ones with the corresponding class
      	type (Any_Integer or Any_Real).
      
      2016-04-20  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch5.adb (Analyze_Iterator_Specification): If expansion is
      	disabled, complete the analysis of the iterator name to ensure
      	that reference for entities within are properly generated.
      
      2016-04-20  Arnaud Charlet  <charlet@adacore.com>
      
      	* a-dispat.ads (Yield): add Global contract.
      	* a-calend.ads, a-reatim.ads: Added Initializes => Clock_Time.
      	* a-taside.adb: Added Initializes => Tasking_State.
      
      From-SVN: r235240
      Arnaud Charlet committed
    • sem_ch13.adb (Build_Invariant_Procedure): Reimplement the invariant procedure… · ae3d8837
      sem_ch13.adb (Build_Invariant_Procedure): Reimplement the invariant procedure spec and body insertion.
      
      2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_ch13.adb (Build_Invariant_Procedure):
      	Reimplement the invariant procedure spec and body insertion.
      
      From-SVN: r235239
      Hristian Kirtchev committed
    • [multiple changes] · 776fbb74
      2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_ch13.adb (Add_Invariant): Do not replace
      	the saved expression of an invariatn aspect when inheriting
      	a class-wide type invariant as this clobbers the existing
      	expression. Do not use New_Copy_List as it is unnecessary
      	and leaves the parent pointers referencing the wrong part of
      	the tree. Do not replace the type references for ASIS when
      	inheriting a class-wide type invariant as this clobbers the
      	existing replacement.
      
      2016-04-20  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_util.adb (Build_Explicit_Dereference): If the designated
      	expression is an entity name, generate reference to the entity
      	because it will not be resolved again.
      
      From-SVN: r235238
      Arnaud Charlet committed
    • re PR tree-optimization/70726 (Internal compiler error (ICE) on valid code) · 60d393e8
      2016-04-20  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/70726
      	* tree-vect-stmts.c (vectorizable_shift): Do not use scalar
      	shift amounts from a pattern stmt operand.
      
      	* g++.dg/vect/pr70726.cc: New testcase.
      
      From-SVN: r235236
      Richard Biener committed
    • PR70674: S/390: Add memory barrier to stack pointer restore from fpr. · 82c6f58a
      This patches fixes a problem with stack variable accesses being
      scheduled after the stack pointer restore instructions.  In the
      testcase this happened with the stack variable 'a' accessed through the
      frame pointer.
      
      The existing stack_tie we have in the backend is basically useless
      when trying to block stack variable accesses from being scheduled
      across an insn.  The alias set of stack variables and the frame alias
      set usually differ and hence aren't in conflict with each other.  The
      solution appears to be a magic MEM term with a scratch register which
      is handled as a full memory barrier when analyzing scheduling
      dependencies.
      
      With the patch a (clobber (mem:BLK (scratch))) is being added to the
      restore instruction in order to prevent any memory operations to be
      scheduled across the insn.  The patch does that only for the one case
      where the stack pointer is restored from an FPR.  Theoretically this
      might happen also in the case where the stack pointer gets restored
      using a load multiple.  However, triggering that problem with
      load-multiple appears to be much harder since the load-multiple will
      restore the frame pointer as well.  So in order to see the problem a
      different call-clobbered register would need to be used as temporary
      stack pointer.
      
      Another case which needs to be handled some day is the stack pointer
      allocation part.  It needs to be a memory barrier as well.
      
      Bootstrapped and regression tested with --with-arch z196 and z13 on
      s390 and s390x.
      
      -Andreas-
      
      gcc/ChangeLog:
      
      2016-04-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/70674
      	* config/s390/s390.c (s390_restore_gprs_from_fprs): Pick the new
      	stack_restore_from_fpr pattern when restoring r15.
      	(s390_optimize_prologue): Strip away the memory barrier in the
      	parallel when trying to get rid of restore insns.
      	* config/s390/s390.md ("stack_restore_from_fpr"): New insn
      	definition for loading the stack pointer from an FPR.  Compared to
      	the normal move insn this pattern includes a full memory barrier.
      
      gcc/testsuite/ChangeLog:
      
      2016-04-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/70674
      	* gcc.target/s390/pr70674.c: New test.
      
      From-SVN: r235234
      Andreas Krebbel committed
    • re PR middle-end/70680 (OpenMP SIMD linear variable privatized too eagerly) · 84311083
      	PR middle-end/70680
      	* gimplify.c (gimplify_omp_for): Call omp_notice_variable for
      	implicitly linear or lastprivate iterator on the outer context.
      
      	* testsuite/libgomp.c/pr70680-1.c: New test.
      	* testsuite/libgomp.c/pr70680-2.c: New test.
      
      From-SVN: r235232
      Jakub Jelinek committed
    • Attach PR number to most recent entry. · 743af971
      From-SVN: r235231
      Ben Elliston committed
    • Daily bump. · afe0fab2
      From-SVN: r235230
      GCC Administrator committed
  2. 19 Apr, 2016 32 commits
    • Remove ssememalign · 6048e2ed
      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
      H.J. Lu committed
    • libjava.exp (libjava_arguments): Use 'file normalize' rather than the defunct… · 14f0f2fc
      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
      Ben Elliston committed
    • PR c++/66543 - -Wunused-but-set* false positives · 76f39440
      	* 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
      Jason Merrill committed
    • re PR libfortran/70684 (incorrect reading of values from file on Windows) · 90eeab20
      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
      Jerry DeLisle committed
    • DR 2137 - copy-constructor rank in list-initialization · 218e9dde
      	* 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
      Jason Merrill committed
    • Improve constexpr handling of other loop forms. · 06ec22b7
      	* 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
      Jason Merrill committed
    • PR c++/68206 - Fix constexpr diagnostics with loops. · f937929e
      	PR c++/68530
      	* constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
      	and GOTO_EXPR.
      
      From-SVN: r235217
      Jason Merrill committed
    • libstdc++/69703 ignore endianness in codecvt_utf8 · 29ca91f7
      	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
      Jonathan Wakely committed
    • libstdc++/70609 fix filesystem::copy() · 14905251
      	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
      Jonathan Wakely committed
    • Add noexcept to Filesystem TS operators · 9c476ad4
      	* 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
      Jonathan Wakely committed
    • Tiny C++ cleanups. · b1e47084
      	* pt.c (tsubst_expr): Remove shadowing declaration.
      	(tsubst_pack_expansion): Add assert.
      	* semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.
      
      From-SVN: r235213
      Jason Merrill committed
    • Allocate memory on cache line if requested · 831698b8
      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
      H.J. Lu committed
    • c++14_warning.h: Do not refer C++14 as experimental. · d855ad89
      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
      Edward Smith-Rowland committed
    • Remove UNSPEC_LOADU and UNSPEC_STOREU · fc9cf6da
      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
      H.J. Lu committed
    • re PR tree-optimization/70171 (Poor code generated when return struct using ternary operator) · ea8927ea
      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
      Richard Biener committed
    • i386.c (ix86_decompose_address): Use lowpart_subreg instead of simplify_gen_subreg (... · 9a81dba6
      	* 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
      Uros Bizjak committed
    • re PR c++/70522 (Hidden friend functions block qualified name lookup into nested unnamed namespace) · 3ba065e8
      	PR c++/70522
      
      	* name-lookup.c (qualified_lookup_using_namespace): Look through
      	hidden names.
      
      From-SVN: r235206
      Jason Merrill committed
    • standard_and_implementation_defined_restrictions.rst, [...]: Update documentation. · a0176903
              * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
              gnat_rm.texi: Update documentation.
      
      From-SVN: r235205
      Arnaud Charlet committed
    • [multiple changes] · 009c0268
      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
      Arnaud Charlet committed
    • re PR tree-optimization/70724 (Miscompiles python3 with FDO) · 65f52ee9
      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
      Richard Biener committed
    • sem_util.adb (Build_Elaboration_Entity): Always request an elab counter when… · 27b95a65
      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
      Olivier Hainque committed
    • [multiple changes] · b4213ffd
      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
      Arnaud Charlet committed
    • [multiple changes] · b3143037
      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
      Arnaud Charlet committed
    • sem_res.adb (Within_Subprogram_Call): Detect also nodes that appear in entry calls. · e90e9503
      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
      Arnaud Charlet committed
    • sem_ch6.adb (Process_Formals): Mark suspicious reference to SPARK RM in comment. · db7e3721
      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
      Arnaud Charlet committed
    • sem_ch6.adb (Possible_Freeze): If the type is an incomplete CW type... · 68101499
      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
      Eric Botcazou committed
    • [multiple changes] · 16e764a7
      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
      Arnaud Charlet committed
    • sem_util.adb (Copy_Node_With_Replacement): use Set_Comes_From_Source instead of… · 4754d4e8
      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
      Arnaud Charlet committed
    • [multiple changes] · 87fd6836
      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
      Arnaud Charlet committed
    • [multiple changes] · b35e5dcb
      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
      Arnaud Charlet committed
    • gimple-walk.h (struct walk_stmt_info): Add stmt member. · d247f8e2
      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
      Richard Biener committed
    • re PR middle-end/70689 (ICE on valid code at -O1 in 32-bit mode on… · 987b67f1
      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
      Vladimir Makarov committed