gcc.git
8 years agoOpenMP offloading to NVPTX: middle-end changes
Alexander Monakov [Tue, 22 Nov 2016 16:57:29 +0000 (19:57 +0300)]
OpenMP offloading to NVPTX: middle-end changes

* internal-fn.c (expand_GOMP_SIMT_LANE): New.
(expand_GOMP_SIMT_VF): New.
(expand_GOMP_SIMT_LAST_LANE): New.
(expand_GOMP_SIMT_ORDERED_PRED): New.
(expand_GOMP_SIMT_VOTE_ANY): New.
(expand_GOMP_SIMT_XCHG_BFLY): New.
(expand_GOMP_SIMT_XCHG_IDX): New.
* internal-fn.def (GOMP_SIMT_LANE): New.
(GOMP_SIMT_VF): New.
(GOMP_SIMT_LAST_LANE): New.
(GOMP_SIMT_ORDERED_PRED): New.
(GOMP_SIMT_VOTE_ANY): New.
(GOMP_SIMT_XCHG_BFLY): New.
(GOMP_SIMT_XCHG_IDX): New.
* omp-low.c (omp_maybe_offloaded_ctx): New, outlined from...
(create_omp_child_function): ...here.  Set "omp target entrypoint"
or "omp declare target" attribute based on is_gimple_omp_offloaded.
(omp_max_simt_vf): New.  Use it...
(omp_max_vf): ...here.
(lower_rec_input_clauses): Add reduction lowering for SIMT execution.
(lower_lastprivate_clauses): Likewise, for "lastprivate" lowering.
(lower_omp_ordered): Likewise, for "ordered" lowering.
(expand_omp_simd): Add SIMT transforms.
(pass_data_lower_omp): Add PROP_gimple_lomp_dev.
(execute_omp_device_lower): New.
(pass_data_omp_device_lower): New.
(pass_omp_device_lower): New pass.
(make_pass_omp_device_lower): New.
* passes.def (pass_omp_device_lower): Position new pass.
* tree-pass.h (PROP_gimple_lomp_dev): Define.
(make_pass_omp_device_lower): Declare.

From-SVN: r242710

8 years agore PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call...
Jakub Jelinek [Tue, 22 Nov 2016 16:54:13 +0000 (17:54 +0100)]
re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call to always_inline '_mm512_setzero_ps')

PR target/78451
* gcc.target/i386/sse-22.c: Add avx5124fmaps,avx5124vnniw to
GCC target pragma before including immintrin.h.

From-SVN: r242708

8 years agore PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call...
Jakub Jelinek [Tue, 22 Nov 2016 16:53:35 +0000 (17:53 +0100)]
re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call to always_inline '_mm512_setzero_ps')

PR target/78451
* config/i386/avx512vlintrin.h (_mm_setzero_di): Removed.
(_mm_maskz_mov_epi64): Use _mm_setzero_si128 instead of
_mm_setzero_di.
(_mm_maskz_load_epi64): Likewise.
(_mm_setzero_hi): Removed.
(_mm_maskz_loadu_epi64): Use _mm_setzero_si128 instead of
_mm_setzero_di.
(_mm_abs_epi64, _mm_maskz_abs_epi64, _mm_maskz_srl_epi64,
_mm_maskz_unpackhi_epi64, _mm_maskz_unpacklo_epi64,
_mm_maskz_compress_epi64, _mm_srav_epi64, _mm_maskz_srav_epi64,
_mm_maskz_sllv_epi64, _mm_maskz_srlv_epi64, _mm_rolv_epi64,
_mm_maskz_rolv_epi64, _mm_rorv_epi64, _mm_maskz_rorv_epi64,
_mm_min_epi64, _mm_max_epi64, _mm_max_epu64, _mm_min_epu64,
_mm_lzcnt_epi64, _mm_maskz_lzcnt_epi64, _mm_conflict_epi64,
_mm_maskz_conflict_epi64, _mm_sra_epi64, _mm_maskz_sra_epi64,
_mm_maskz_sll_epi64, _mm_rol_epi64, _mm_maskz_rol_epi64,
_mm_ror_epi64, _mm_maskz_ror_epi64, _mm_alignr_epi64,
_mm_maskz_alignr_epi64, _mm_srai_epi64, _mm_maskz_slli_epi64):
Likewise.
(_mm_cvtepi32_epi8, _mm256_cvtepi32_epi8, _mm_cvtsepi32_epi8,
_mm256_cvtsepi32_epi8, _mm_cvtusepi32_epi8, _mm256_cvtusepi32_epi8,
_mm_cvtepi32_epi16, _mm256_cvtepi32_epi16, _mm_cvtsepi32_epi16,
_mm256_cvtsepi32_epi16, _mm_cvtusepi32_epi16, _mm256_cvtusepi32_epi16,
_mm_cvtepi64_epi8, _mm256_cvtepi64_epi8, _mm_cvtsepi64_epi8,
_mm256_cvtsepi64_epi8, _mm_cvtusepi64_epi8, _mm256_cvtusepi64_epi8,
_mm_cvtepi64_epi16, _mm256_cvtepi64_epi16, _mm_cvtsepi64_epi16,
_mm256_cvtsepi64_epi16, _mm_cvtusepi64_epi16, _mm256_cvtusepi64_epi16,
_mm_cvtepi64_epi32, _mm256_cvtepi64_epi32, _mm_cvtsepi64_epi32,
_mm256_cvtsepi64_epi32, _mm_cvtusepi64_epi32, _mm256_cvtusepi64_epi32,
_mm_maskz_set1_epi32, _mm_maskz_set1_epi64): Formatting fixes.
(_mm_maskz_cvtps_ph, _mm256_maskz_cvtps_ph): Use _mm_setzero_si128
instead of _mm_setzero_hi.
(_mm256_permutex_pd, _mm256_maskz_permutex_epi64, _mm256_insertf32x4,
_mm256_maskz_insertf32x4, _mm256_inserti32x4, _mm256_maskz_inserti32x4,
_mm256_extractf32x4_ps, _mm256_maskz_extractf32x4_ps,
_mm256_shuffle_i32x4, _mm256_maskz_shuffle_i32x4, _mm256_shuffle_f64x2,
_mm256_maskz_shuffle_f64x2, _mm256_shuffle_f32x4,
_mm256_maskz_shuffle_f32x4, _mm256_maskz_shuffle_pd,
_mm_maskz_shuffle_pd, _mm256_maskz_shuffle_ps, _mm_maskz_shuffle_ps,
_mm256_maskz_srli_epi32, _mm_maskz_srli_epi32, _mm_maskz_srli_epi64,
_mm256_mask_slli_epi32, _mm256_maskz_slli_epi32, _mm256_mask_slli_epi64,
_mm256_maskz_slli_epi64, _mm256_roundscale_ps,
_mm256_maskz_roundscale_ps, _mm256_roundscale_pd,
_mm256_maskz_roundscale_pd, _mm_roundscale_ps, _mm_maskz_roundscale_ps,
_mm_roundscale_pd, _mm_maskz_roundscale_pd, _mm256_getmant_ps,
_mm256_maskz_getmant_ps, _mm_getmant_ps, _mm_maskz_getmant_ps,
_mm256_getmant_pd, _mm256_maskz_getmant_pd, _mm_getmant_pd,
_mm_maskz_getmant_pd, _mm256_maskz_shuffle_epi32,
_mm_maskz_shuffle_epi32, _mm256_rol_epi32, _mm256_maskz_rol_epi32,
_mm_rol_epi32, _mm_maskz_rol_epi32, _mm256_ror_epi32,
_mm256_maskz_ror_epi32, _mm_ror_epi32, _mm_maskz_ror_epi32,
_mm_maskz_alignr_epi32, _mm_maskz_alignr_epi64,
_mm256_maskz_srai_epi32, _mm_maskz_srai_epi32, _mm_srai_epi64,
_mm_maskz_srai_epi64, _mm256_maskz_permutex_pd,
_mm256_maskz_permute_pd, _mm256_maskz_permute_ps, _mm_maskz_permute_pd,
_mm_maskz_permute_ps, _mm256_permutexvar_ps): Formatting fixes.
(_mm_maskz_slli_epi64, _mm_rol_epi64, _mm_maskz_rol_epi64,
_mm_ror_epi64, _mm_maskz_ror_epi64): Use _mm_setzero_si128 instead of
_mm_setzero_di.
(_mm_maskz_cvtps_ph, _mm256_maskz_cvtps_ph): Use _mm_setzero_si128
instead of _mm_setzero_hi.
* config/i386/avx512dqintrin.h (_mm512_broadcast_f64x2,
_mm512_broadcast_i64x2, _mm512_broadcast_f32x2, _mm512_broadcast_i32x2,
_mm512_broadcast_f32x8, _mm512_broadcast_i32x8): Formatting fixes.
(_mm512_extracti64x2_epi64, _mm512_maskz_extracti64x2_epi64): Use
_mm_setzero_si128 instead of _mm_setzero_di.
(_mm512_cvtt_roundpd_epi64, _mm512_mask_cvtt_roundpd_epi64,
_mm512_maskz_cvtt_roundpd_epi64, _mm512_cvtt_roundpd_epu64,
_mm512_mask_cvtt_roundpd_epu64, _mm512_maskz_cvtt_roundpd_epu64,
_mm512_cvtt_roundps_epi64, _mm512_mask_cvtt_roundps_epi64,
_mm512_maskz_cvtt_roundps_epi64, _mm512_cvtt_roundps_epu64,
_mm512_mask_cvtt_roundps_epu64, _mm512_maskz_cvtt_roundps_epu64,
_mm512_cvt_roundpd_epi64, _mm512_mask_cvt_roundpd_epi64,
_mm512_maskz_cvt_roundpd_epi64, _mm512_cvt_roundpd_epu64,
_mm512_mask_cvt_roundpd_epu64, _mm512_maskz_cvt_roundpd_epu64,
_mm512_cvt_roundps_epi64, _mm512_mask_cvt_roundps_epi64,
_mm512_maskz_cvt_roundps_epi64, _mm512_cvt_roundps_epu64,
_mm512_mask_cvt_roundps_epu64, _mm512_maskz_cvt_roundps_epu64,
_mm512_cvt_roundepi64_ps, _mm512_mask_cvt_roundepi64_ps,
_mm512_maskz_cvt_roundepi64_ps, _mm512_cvt_roundepu64_ps,
_mm512_mask_cvt_roundepu64_ps, _mm512_maskz_cvt_roundepu64_ps,
_mm512_cvt_roundepi64_pd, _mm512_mask_cvt_roundepi64_pd,
_mm512_maskz_cvt_roundepi64_pd, _mm512_cvt_roundepu64_pd,
_mm512_mask_cvt_roundepu64_pd, _mm512_maskz_cvt_roundepu64_pd,
_mm512_reduce_pd, _mm512_maskz_reduce_pd, _mm512_reduce_ps,
_mm512_maskz_reduce_ps, _mm512_extractf32x8_ps,
_mm512_maskz_extractf32x8_ps, _mm512_extractf64x2_pd,
_mm512_maskz_extractf64x2_pd, _mm512_extracti32x8_epi32,
_mm512_maskz_extracti32x8_epi32, _mm512_range_pd,
_mm512_maskz_range_pd, _mm512_range_ps, _mm512_maskz_range_ps,
_mm512_range_round_pd, _mm512_maskz_range_round_pd,
_mm512_range_round_ps, _mm512_maskz_range_round_ps,
_mm512_maskz_insertf64x2, _mm512_insertf32x8,
_mm512_maskz_insertf32x8): Formatting fixes.
(_mm512_extracti64x2_epi64, _mm512_maskz_extracti64x2_epi64): Use
_mm_setzero_si128 instead of _mm_setzero_di.
* config/i386/avx512vldqintrin.h (_mm_cvttpd_epi64,
_mm_cvttpd_epu64, _mm_cvtpd_epi64, _mm_cvtpd_epu64,
_mm_cvttps_epi64, _mm_maskz_cvttps_epi64, _mm_cvttps_epu64,
_mm_maskz_cvttps_epu64, _mm_maskz_mullo_epi64, _mm_cvtps_epi64,
_mm_maskz_cvtps_epi64, _mm_cvtps_epu64, _mm_maskz_cvtps_epu64,
_mm256_extracti64x2_epi64, _mm256_maskz_extracti64x2_epi64): Use
_mm_setzero_si128 instead of _mm_setzero_di.
(_mm256_extracti64x2_epi64, _mm256_maskz_extracti64x2_epi64):
Likewise in macros.
* config/i386/avx512vlbwintrin.h (_mm_maskz_mov_epi8,
_mm_maskz_loadu_epi16, _mm_maskz_mov_epi16, _mm_maskz_loadu_epi8,
_mm_permutexvar_epi16, _mm_maskz_maddubs_epi16): Use
_mm_setzero_si128 instead of _mm_setzero_hi.
(_mm_maskz_min_epu16, _mm_maskz_max_epu8, _mm_maskz_max_epi8,
_mm_maskz_min_epu8, _mm_maskz_min_epi8, _mm_maskz_max_epi16,
_mm_maskz_max_epu16, _mm_maskz_min_epi16): Use _mm_setzero_si128
instead of _mm_setzero_di.
(_mm_dbsad_epu8, _mm_maskz_shufflehi_epi16,
_mm_maskz_shufflelo_epi16): Use _mm_setzero_si128 instead of
_mm_setzero_hi.
(_mm_maskz_shufflehi_epi16, _mm_maskz_shufflelo_epi16,
_mm_maskz_slli_epi16): Use _mm_setzero_si128 instead of
_mm_setzero_hi.
(_mm_maskz_alignr_epi8): Use _mm_setzero_si128 instead of
_mm_setzero_di.
(_mm_maskz_mulhi_epi16, _mm_maskz_mulhi_epu16, _mm_maskz_mulhrs_epi16,
_mm_maskz_mullo_epi16, _mm_srav_epi16, _mm_srlv_epi16,
_mm_sllv_epi16): Use _mm_setzero_si128 instead of _mm_setzero_hi.

From-SVN: r242707

8 years agors6000-c.c: Add built-in support for vector compare equal and vector compare not...
Carl Love [Tue, 22 Nov 2016 16:49:02 +0000 (16:49 +0000)]
rs6000-c.c: Add built-in support for vector compare equal and vector compare not equal.

gcc/ChangeLog:

2016-11-21  Carl Love  <cel@us.ibm.com>

        * config/rs6000/rs6000-c.c: Add built-in support for vector compare
        equal and vector compare not equal.  The vector compares take two
        arguments of type vector bool char, vector bool short, vector bool int,
        vector bool long long with the same return type.
        * doc/extend.texi: Update built-in documentation file for the new
        powerpc built-ins.

gcc/testsuite/ChangeLog:

2016-11-21  Carl Love  <cel@us.ibm.com>

        * gcc.target/powerpc/builtins-3.c: New file to test the new
        built-ins for vector compare equal and vector compare not equal.

From-SVN: r242706

8 years agoMakefile.in ($(lang_checks_parallelized)): Fix detection of -j argument.
Uros Bizjak [Tue, 22 Nov 2016 16:33:43 +0000 (17:33 +0100)]
Makefile.in ($(lang_checks_parallelized)): Fix detection of -j argument.

gcc/ChangeLog

* Makefile.in ($(lang_checks_parallelized)): Fix detection
of -j argument.

gcc/ada/ChangeLog

* gcc-interface/Make-lang.in (check-acats): Fix detection
of -j argument.

libstdc++-v3/ChangeLog

* testsuite/Makefile.am
(check-DEJAGNU $(check_DEJAGNU_normal_targets)): Fix detection
of -j argument.
* testsuite/Makefile.in: Regenereate.

From-SVN: r242705

8 years agoPR78465 Remove runtime tests for <atomic> macros
Jonathan Wakely [Tue, 22 Nov 2016 16:31:19 +0000 (16:31 +0000)]
PR78465 Remove runtime tests for <atomic> macros

PR libstdc++/78465
* testsuite/29_atomics/headers/atomic/macros.cc: Replace runtime tests
with preprocessor conditions.

From-SVN: r242704

8 years agore PR fortran/78443 ([OOP] Incorrect behavior with non_overridable keyword)
Janus Weil [Tue, 22 Nov 2016 16:06:46 +0000 (17:06 +0100)]
re PR fortran/78443 ([OOP] Incorrect behavior with non_overridable keyword)

2016-11-22  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78443
* class.c (add_proc_comp): Add a vtype component for non-overridable
procedures that are overriding.

2016-11-22  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78443
* gfortran.dg/typebound_proc_35.f90: New test case.

From-SVN: r242703

8 years agopr30778.c (memset): Use size_t for 3rd parameter in declaration.
Georg-Johann Lay [Tue, 22 Nov 2016 15:28:46 +0000 (15:28 +0000)]
pr30778.c (memset): Use size_t for 3rd parameter in declaration.

gcc/testsuite/
* gcc.c-torture/execute/pr30778.c (memset): Use size_t for 3rd
parameter in declaration.

From-SVN: r242702

8 years agoloop-split.c: Require int32plus.
Georg-Johann Lay [Tue, 22 Nov 2016 15:06:47 +0000 (15:06 +0000)]
loop-split.c: Require int32plus.

gcc/testsuite/
* gcc.dg/loop-split.c: Require int32plus.
* gcc.dg/stack-layout-dynamic-1.c: Require ptr32plus.

From-SVN: r242701

8 years agopr53447-5.c: Fix test expectations for neon-fpu.
Bernd Edlinger [Tue, 22 Nov 2016 14:57:28 +0000 (14:57 +0000)]
pr53447-5.c: Fix test expectations for neon-fpu.

2016-11-22  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gcc.target/arm/pr53447-5.c: Fix test expectations for neon-fpu.

From-SVN: r242700

8 years agobuiltin-shuffle-1.c (V): Use 4 * int in vector.
Georg-Johann Lay [Tue, 22 Nov 2016 14:07:45 +0000 (14:07 +0000)]
builtin-shuffle-1.c (V): Use 4 * int in vector.

gcc/testsuite/
* c-c++-common/builtin-shuffle-1.c (V): Use 4 * int in vector.

From-SVN: r242697

8 years agoAdd multilib support for embedded bare-metal targets
Thomas Preud'homme [Tue, 22 Nov 2016 14:01:57 +0000 (14:01 +0000)]
Add multilib support for embedded bare-metal targets

2016-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config.gcc: Allow new rmprofile value for configure option
    --with-multilib-list.
    * config/arm/t-rmprofile: New file.
    * doc/install.texi (--with-multilib-list): Document new rmprofile value
    for ARM.

From-SVN: r242696

8 years ago[ARM] PR target/78439: Update movdi constraints for Cortex-A8 tuning to handle LDRD...
Kyrylo Tkachov [Tue, 22 Nov 2016 12:12:05 +0000 (12:12 +0000)]
[ARM] PR target/78439: Update movdi constraints for Cortex-A8 tuning to handle LDRD/STRD

PR target/78439
* config/arm/vfp.md (*movdi_vfp_cortexa8): Use 'q' constraints for the
register operand in alternatives 4,5,6.

* gcc.c-torture/compile/pr78439.c: New test.

From-SVN: r242695

8 years agore PR target/77904 ([ARM Cortex-M0] Frame pointer thrashes registers if assembly...
Thomas Preud'homme [Tue, 22 Nov 2016 10:44:29 +0000 (10:44 +0000)]
re PR target/77904 ([ARM Cortex-M0] Frame pointer thrashes registers if assembly statements with "sp" clobber are used)

2016-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR target/77904
    * config/arm/arm.c (thumb1_compute_save_reg_mask): Mark frame pointer
    in save register mask if it is needed.

    gcc/testsuite/
    PR target/77904
    * gcc.target/arm/pr77904.c: New test.

From-SVN: r242693

8 years agoMIPS: Add the isa_rev>=2 option to interrupt_handler-bug-1.c.
Toma Tabacu [Tue, 22 Nov 2016 10:38:51 +0000 (10:38 +0000)]
MIPS: Add the isa_rev>=2 option to interrupt_handler-bug-1.c.

gcc/testsuite/

* gcc.target/mips/interrupt_handler-bug-1.c (dg-options): Add
isa_rev>=2.

From-SVN: r242692

8 years agore PR tree-optimization/78436 (incorrect write to larger-than-type bitfield (signed...
Jakub Jelinek [Tue, 22 Nov 2016 10:15:43 +0000 (11:15 +0100)]
re PR tree-optimization/78436 (incorrect write to larger-than-type bitfield (signed char x:9))

PR tree-optimization/78436
* gimple-ssa-store-merging.c (zero_char_buf): Removed.
(shift_bytes_in_array, shift_bytes_in_array_right,
merged_store_group::apply_stores): Formatting fixes.
(clear_bit_region): Likewise.  Use memset.
(encode_tree_to_bitpos): Formatting fixes.  Fix comment typos - EPXR
instead of EXPR and inerted instead of inserted.  Use memset instead
of zero_char_buf.  For !BYTES_BIG_ENDIAN decrease byte_size by 1
if shift_amnt is 0.

* gcc.c-torture/execute/pr78436.c: New test.

From-SVN: r242691

8 years agore PR middle-end/78416 (wrong code for division by (u128)~INT64_MAX at -O0)
Jakub Jelinek [Tue, 22 Nov 2016 10:14:21 +0000 (11:14 +0100)]
re PR middle-end/78416 (wrong code for division by (u128)~INT64_MAX at -O0)

PR middle-end/78416
* expmed.c (expand_divmod): Use wide_int for computation of
op1_is_pow2.  Don't set it if op1 is 0.  Formatting fixes.
Use size <= HOST_BITS_PER_WIDE_INT instead of
HOST_BITS_PER_WIDE_INT >= size.

* gcc.dg/torture/pr78416.c: New test.

From-SVN: r242690

8 years agore PR middle-end/78445 (ICE in maybe_gen_insn, at optabs.c:7014)
Jakub Jelinek [Tue, 22 Nov 2016 10:13:01 +0000 (11:13 +0100)]
re PR middle-end/78445 (ICE in maybe_gen_insn, at optabs.c:7014)

PR tree-optimization/78445
* tree-if-conv.c (tree_if_conversion): If any_pred_load_store or
any_complicated_phi, version loop even if flag_tree_loop_if_convert is
1.  Formatting fix.

* gcc.dg/pr78445.c: New test.

From-SVN: r242689

8 years ago[PR libgfortran/78449] XFAIL ieee_8.f90 on aarch64 and arm
Szabolcs Nagy [Tue, 22 Nov 2016 10:06:05 +0000 (10:06 +0000)]
[PR libgfortran/78449] XFAIL ieee_8.f90 on aarch64 and arm

ARM and AArch64 may not support trapping so runtime and
compile time check can differ.

gcc/testsuite/
PR libgfortran/78449
* gfortran.dg/ieee/ieee_8.f90 (aarch64*gnu, arm*gnu*): Mark xfail.

From-SVN: r242688

8 years agoAdd sem_item::m_hash_set (PR ipa/78309)
Martin Liska [Tue, 22 Nov 2016 09:18:37 +0000 (10:18 +0100)]
Add sem_item::m_hash_set (PR ipa/78309)

PR ipa/78309
* ipa-icf.c (void sem_item::set_hash): Update m_hash_set.
(sem_function::get_hash): Use the new field.
(sem_function::parse): Remove an argument from ctor.
(sem_variable::parse): Likewise.
(sem_variable::get_hash): Use the new field.
(sem_item_optimizer::read_section): Use new ctor and set hash.
* ipa-icf.h: _hash is removed from sem_item::sem_item,
sem_variable::sem_variable, sem_function::sem_function.

From-SVN: r242687

8 years agoDaily bump.
GCC Administrator [Tue, 22 Nov 2016 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242686

8 years agore PR target/68538 (ICE in gen_reg_rtx, at emit-rtl.c:1027 when cross-compiling for...
Jeff Law [Mon, 21 Nov 2016 23:24:13 +0000 (16:24 -0700)]
re PR target/68538 (ICE in gen_reg_rtx, at emit-rtl.c:1027 when cross-compiling for cris-linux-gnu target)

PR target/68538
* config/cris/cris.md: Don't call copy_to_mode_reg unless
can_create_pseudo_p is true.

        PR target/68538
* gcc.c-torture/compile/pr68538.c: New test.

From-SVN: r242682

8 years agors6000: rl[wd]imi without shift/rotate (PR68803)
Segher Boessenkool [Mon, 21 Nov 2016 22:29:34 +0000 (23:29 +0100)]
rs6000: rl[wd]imi without shift/rotate (PR68803)

We didn't have patterns yet for rl[wd]imi insns that do a rotate by 0.
This fixes it.

PR target/68803
* config/rs6000/rs6000.md (*rotlsi3_insert_5, *rotldi3_insert_6,
*rotldi3_insert_7): New define_insns.

From-SVN: r242681

8 years agors6000.md (movdi_internal32): Change constraints so that DImode can be allocated...
Michael Meissner [Mon, 21 Nov 2016 20:35:21 +0000 (20:35 +0000)]
rs6000.md (movdi_internal32): Change constraints so that DImode can be allocated to FP/vector registers in...

[gcc]
2016-11-21  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.md (movdi_internal32): Change constraints
so that DImode can be allocated to FP/vector registers in more
cases, and we can avoid direct move operations.  If the register
needs reloading, prefer GPRs over FP/vector registers.  In the
case of FPR vs. Altivec registers, prefer FPR registers unless we
have the ISA 3.0 reg+offset scalar instructions.
(movdi_internal64): Likewise.

[gcc/testsuite]
2016-11-21  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/ppc-round2.c: Allow XSCVDPSXWS and XSCVDPUXWS
to be generated instead of FCTIWUZ or FCTIWZ.

From-SVN: r242679

8 years agore PR middle-end/67335 (ICE in compiling omp simd function with unused argument)
Jakub Jelinek [Mon, 21 Nov 2016 19:17:36 +0000 (20:17 +0100)]
re PR middle-end/67335 (ICE in compiling omp simd function with unused argument)

PR middle-end/67335
* omp-simd-clone.c (simd_clone_adjust_argument_types): Use NULL prefix
for tmp simd array if DECL_NAME (parm) is NULL.

* g++.dg/vect/simd-clone-7.cc: New test.

From-SVN: r242678

8 years agore PR c++/71973 (c++ handles built-in functions inconsistently)
Jakub Jelinek [Mon, 21 Nov 2016 18:55:11 +0000 (19:55 +0100)]
re PR c++/71973 (c++ handles built-in functions inconsistently)

PR c++/71973
* g++.dg/torture/pr53321.C (size_t): Use __SIZE_TYPE__ instead of
long unsigned int.
* g++.dg/torture/pr63512.C (::strlen): Use __SIZE_TYPE__ instead of
unsigned long.

From-SVN: r242677

8 years agore PR target/25128 ([m68k] Suboptimal comparisons against 65536)
Jeff Law [Mon, 21 Nov 2016 18:19:12 +0000 (11:19 -0700)]
re PR target/25128 ([m68k] Suboptimal comparisons against 65536)

PR target/25128
* config/m68k/predicates.md (swap_peephole_relational_operator): New
predicate.
* config/m68k/m68k.md (relational tests against 65535/65536): New
peephole2.

PR target/25128
* gcc.target/m68k/pr25128.c: New test.

From-SVN: r242676

8 years agoRemove dead FIXME
Kyrylo Tkachov [Mon, 21 Nov 2016 17:22:45 +0000 (17:22 +0000)]
Remove dead FIXME

* tree-ssa-loop-prefetch.c: Delete FIXME after the includes.

From-SVN: r242675

8 years agoEnable -fprintf-return-value by default. Tested on powerpc64le and x86.
Martin Sebor [Mon, 21 Nov 2016 17:15:54 +0000 (17:15 +0000)]
Enable -fprintf-return-value by default.  Tested on powerpc64le and x86.

gcc/c-family/ChangeLog:

* c.opt (-fprintf-return-value): Enable by default.

gcc/ChangeLog:

* doc/invoke.texi (-fprintf-return-value): Document that option
is enabled by default.

From-SVN: r242674

8 years agoavr-c.c (avr_register_target_pragmas): Use C++ for-loop declaration of loop variable.
Georg-Johann Lay [Mon, 21 Nov 2016 16:59:51 +0000 (16:59 +0000)]
avr-c.c (avr_register_target_pragmas): Use C++ for-loop declaration of loop variable.

gcc/
* config/avr/avr-c.c (avr_register_target_pragmas): Use C++
for-loop declaration of loop variable.
(avr_register_target_pragmas, avr_cpu_cpp_builtins): Same.
* config/avr/avr.c (avr_popcount_each_byte)
(avr_init_expanders, avr_regs_to_save, sequent_regs_live)
(get_sequence_length, avr_prologue_setup_frame, avr_map_metric)
(avr_expand_epilogue, avr_function_arg_advance)
(avr_out_compare, avr_out_plus_1, avr_out_bitop, avr_out_fract)
(avr_rotate_bytes, _reg_unused_after, avr_assemble_integer)
(avr_adjust_reg_alloc_order, output_reload_in_const)
(avr_conditional_register_usage, avr_find_unused_d_reg)
(avr_map_decompose, avr_fold_builtin): Same.

From-SVN: r242672

8 years agoDon't define libstdc++-internal macros in Solaris 10+ <math.h>
Rainer Orth [Mon, 21 Nov 2016 16:09:47 +0000 (16:09 +0000)]
Don't define libstdc++-internal macros in Solaris 10+ <math.h>

libstdc++-v3:
* acinclude.m4 (GLIBCXX_CHECK_MATH11_PROTO): Update comments.
(__CORRECT_ISO_CPP11_MATH_H_PROTO): Rename to ...
(__CORRECT_ISO_CPP11_MATH_H_PROTO_FP): ... this.
Add test for C++11 <math.h> integral overloads.
* configure: Regenerate.
* config.h.in: Regenerate.

* include/c_global/cmath [__cplusplus >= 201103L]: Reflect
__CORRECT_ISO_CPP11_MATH_H_PROTO to
__CORRECT_ISO_CPP11_MATH_H_PROTO_FP rename.
* include/c_global/cmath [_GLIBCXX_USE_C99_MATH &&
!_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC && __cplusplus >= 201103L]
(std::fpclassify): Wrap in !__CORRECT_ISO_CPP11_MATH_H_PROTO_INT.
(std::isfinite): Likewise.
(std::isinf): Likewise.
(std::isnan): Likewise.
(std::isnormal): Likewise.
(std::signbit): Likewise.
(std::isgreater): Likewise.
(std::isgreaterequal): Likewise.
(std::isless): Likewise.
(std::islessequal): Likewise.
(std::islessgreater): Likewise.
(std::isunordered): Likewise.
[__cplusplus >= 201103L && _GLIBCXX_USE_C99_MATH_TR1]
(std::acosh): Likewise.
(std::asinh): Likewise.
(std::atanh): Likewise.
(std::cbrt): Likewise.
(std::copysign): Likewise.
(std::erf): Likewise.
(std::erfc): Likewise.
(std::exp2): Likewise.
(std::expm1): Likewise.
(std::fdim): Likewise.
(std::fma): Likewise.
(std::fmax): Likewise.
(std::fmin): Likewise.
(std::hypot): Likewise.
(std::ilogb): Likewise.
(std::lgamma): Likewise.
(std::llrint): Likewise.
(std::llround): Likewise.
(std::log1p): Likewise.
(std::log2): Likewise.
(std::logb): Likewise.
(std::lrint): Likewise.
(std::lround): Likewise.
(std::nearbyint): Likewise.
(std::nextafter): Likewise.
(std::nexttoward): Likewise.
(std::remainder): Likewise.
(std::remquo): Likewise.
(std::rint): Likewise.
(std::round): Likewise.
(std::scalbln): Likewise.
(std::scalbn): Likewise.
(std::tgamma): Likewise.
(std::trunc): Likewise.
* include/tr1/cmath [_GLIBCXX_USE_C99_MATH_TR1 && __cplusplus >=
201103L]: Reflect __CORRECT_ISO_CPP11_MATH_H_PROTO to
__CORRECT_ISO_CPP11_MATH_H_PROTO_FP rename.

fixincludes:
* inclhack.def (solaris_math_12): New fix.
(hpux11_fabsf): Replace bypass by *-hp-hpux11* mach selector.
* fixincl.x: Regenerate.
* tests/base/math.h [SOLARIS_MATH_12_CHECK]: New test.

From-SVN: r242671

8 years agoavr.c (avr_popcount): Remove static function.
Georg-Johann Lay [Mon, 21 Nov 2016 16:04:15 +0000 (16:04 +0000)]
avr.c (avr_popcount): Remove static function.

gcc/
* config/avr/avr.c (avr_popcount): Remove static function.
(avr_popcount_each_byte, avr_out_bitop): Use popcount_hwi instead.

From-SVN: r242670

8 years ago[arm] Remove unimplemented option -macps-float
Richard Earnshaw [Mon, 21 Nov 2016 15:59:13 +0000 (15:59 +0000)]
[arm] Remove unimplemented option -macps-float

* arm.opt (mapcs-float): Delete option
* arm.c (arm_option_override): Remove hunk relating to
TARGET_APCS_FLOAT.
* doc/invoke.texi (arm options): Remove documentation for -mapcs-float.

From-SVN: r242669

8 years agoHandle sibcalls with aggregate returns
Richard Sandiford [Mon, 21 Nov 2016 15:52:09 +0000 (15:52 +0000)]
Handle sibcalls with aggregate returns

We treated this g as a sibling call to f:

      int f (int);
      int g (void) { return f (1); }

but not this one:

      struct s { int i; };
      struct s f (int);
      struct s g (void) { return f (1); }

We treated them both as sibcalls on x86 before the first patch for PR36326,
so I suppose this is a regression of sorts from 4.3.

The patch allows function returns to be local aggregate variables as well
as gimple registers.

gcc/
* tree-tailcall.c (process_assignment): Simplify the check for
a valid copy, allowing the source to be a local variable as
well as an SSA name.
(find_tail_calls): Allow copies between local variables to follow
the call.  Allow the result to be stored in any local variable,
even if it's an aggregate.
(eliminate_tail_call): Check whether the result is an SSA name
before updating its SSA_NAME_DEF_STMT.

gcc/testsuite/
* gcc.dg/tree-ssa/tailcall-7.c: New test.

From-SVN: r242668

8 years agosubstring_loc info needs default track-macro-expansion (PR preprocessor/78324)
David Malcolm [Mon, 21 Nov 2016 15:50:38 +0000 (15:50 +0000)]
substring_loc info needs default track-macro-expansion (PR preprocessor/78324)

gcc/ChangeLog:
PR preprocessor/78324
* input.c (get_substring_ranges_for_loc): Fail gracefully if
-ftrack-macro-expansion has a value other than 2.

gcc/testsuite/ChangeLog:
PR preprocessor/78324
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(test_multitoken_macro): New function.
* gcc.dg/plugin/diagnostic-test-string-literals-3.c: New test
case.
* gcc.dg/plugin/diagnostic-test-string-literals-4.c: New test
case.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the new test
cases.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c (test_sprintf_note):
Move to...
* gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: ...here.  Drop
-ftrack-macro-expansion=0.
(test_sprintf_note): Remove "P" macro.  Add
dg-begin/end-multiline-output directives.
(LINE, buffer, ptr): Copy from builtin-sprintf-warn-1.c.

From-SVN: r242667

8 years agotarget-supports.exp (check_effective_target_tiny): Return 1 for AVR_TINY.
Georg-Johann Lay [Mon, 21 Nov 2016 15:38:02 +0000 (15:38 +0000)]
target-supports.exp (check_effective_target_tiny): Return 1 for AVR_TINY.

gcc/testsuite/
* lib/target-supports.exp (check_effective_target_tiny) [avr]:
Return 1 for AVR_TINY.

From-SVN: r242666

8 years agoTestcase for PR71785
Segher Boessenkool [Mon, 21 Nov 2016 15:15:21 +0000 (16:15 +0100)]
Testcase for PR71785

gcc/testsuite/
PR rtl-optimization/71785
* gcc.target/powerpc/pr71785.c: New file.

From-SVN: r242665

8 years agore PR tree-optimization/78114 (gfortran.dg/vect/fast-math-mgrid-resid.f FAILs)
Bin Cheng [Mon, 21 Nov 2016 14:58:19 +0000 (14:58 +0000)]
re PR tree-optimization/78114 (gfortran.dg/vect/fast-math-mgrid-resid.f FAILs)

gcc/testsuite
PR testsuite/78114
* gfortran.dg/vect/fast-math-mgrid-resid.f: Add additional
options.  Refine test by checking predictive commining PHI
nodes in vectorized loop wrto vector factor.

From-SVN: r242664

8 years agoshrink-wrap: Fix problem with DF checking (PR78400)
Segher Boessenkool [Mon, 21 Nov 2016 14:44:21 +0000 (15:44 +0100)]
shrink-wrap: Fix problem with DF checking (PR78400)

With my previous patch the compiler ICEs if you use --enable-checking=df.
This patch fixes it, by calling df_update_entry_exit_and_calls instead of
df_update_entry_block_defs and df_update_exit_block_uses.

PR rtl-optimization/78400
* shrink-wrap.c (try_shrink_wrapping_separate): Call
df_update_entry_exit_and_calls instead of df_update_entry_block_defs
and df_update_exit_block_uses.

From-SVN: r242663

8 years agore PR c++/71973 (c++ handles built-in functions inconsistently)
Bernd Edlinger [Mon, 21 Nov 2016 14:17:05 +0000 (14:17 +0000)]
re PR c++/71973 (c++ handles built-in functions inconsistently)

gcc:
2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

PR c++/71973
* doc/invoke.texi (-Wno-builtin-declaration-mismatch): Document the
new default-enabled warning..
* builtin-types.def (BT_CONST_TM_PTR): New primitive type.
(BT_PTR_CONST_STRING): Updated.
(BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR): Removed.
(BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_TM_PTR): New function type.
* builtins.def (DEF_TM_BUILTIN): Disable BOTH_P for TM builtins.
(strftime): Update builtin function.
* tree-core.h (TI_CONST_TM_PTR_TYPE): New enum value.
* tree.h (const_tm_ptr_type_node): New type node.
* tree.c (free_lang_data, build_common_tree_nodes): Initialize
const_tm_ptr_type_node.

c-family:
2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

PR c++/71973
* c.opt (-Wbuiltin-declaration-mismatch): New warning.
* c-common.c (c_common_nodes_and_builtins): Initialize
const_tm_ptr_type_node.

c:
2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

PR c++/71973
* c-decl.c (diagnose_mismatched_decls): Use
OPT_Wbuiltin_declaration_mismatch here too.

cp:
2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

PR c++/71973
* decl.c (duplicate_decls): Warn when a built-in function is redefined.
Don't overload builtin functions with C++ functions.
Handle const_tm_ptr_type_node like file_ptr_node.
Copy the TREE_NOTHROW flag unmodified to the old decl.

lto:
2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

PR c++/71973
* lto-lang.c (lto_init): Assert const_tm_ptr_type_node is sane.

testsuite:
2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

PR c++/71973
* g++.dg/pr71973-1.C: New test.
* g++.dg/pr71973-2.C: New test.
* g++.dg/pr71973-3.C: New test.
* g++.dg/lto/pr68811_0.C: Add -w to first lto-options.
* g++.dg/lookup/extern-c-redecl4.C: Adjust test expectations.
* g++.old-deja/g++.mike/p700.C: Add -Wno-builtin-declaration-mismatch
to dg-options.
* g++.old-deja/g++.other/realloc.C: Likewise.
* g++.old-deja/g++.other/builtins10.C: Adjust test expectations.

From-SVN: r242662

8 years agore PR tree-optimization/78413 (ICE in single_pred_edge, at basic-block.h:361)
Bill Schmidt [Mon, 21 Nov 2016 14:10:11 +0000 (14:10 +0000)]
re PR tree-optimization/78413 (ICE in single_pred_edge, at basic-block.h:361)

[gcc]

2016-11-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/78413
* tree-if-conv.c (versionable_outer_loop_p): Require that both
inner and outer loop latches have single predecessors.

[gcc/testsuite]

2016-11-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/78413
* gcc.dg/tree-ssa/pr78413.c: New test.

From-SVN: r242661

8 years agore PR target/78093 ([avr] New variable attribute "absdata" and option "-mabsdata...
Georg-Johann Lay [Mon, 21 Nov 2016 12:23:14 +0000 (12:23 +0000)]
re PR target/78093 ([avr] New variable attribute "absdata" and option "-mabsdata" to enable LDS / STS on Reduced Tiny)

PR target/78093
* config/avr/avr.c (avr_decl_maybe_lds_p): New static function.
(avr_encode_section_info) [TARGET_ABSDATA && AVR_TINY]: Use it.

From-SVN: r242660

8 years agoempty_fiq_handler.c: Skip if -mthumb is passed in and target is Thumb-only.
Thomas Preud'homme [Mon, 21 Nov 2016 11:00:22 +0000 (11:00 +0000)]
empty_fiq_handler.c: Skip if -mthumb is passed in and target is Thumb-only.

2016-11-21  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    * gcc.target/arm/empty_fiq_handler.c: Skip if -mthumb is passed in and
    target is Thumb-only.

From-SVN: r242658

8 years agomake dead_or_set_{,regno_}p take rtx_insn *
Trevor Saunders [Mon, 21 Nov 2016 06:16:18 +0000 (06:16 +0000)]
make dead_or_set_{,regno_}p take rtx_insn *

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* rtl.h: Adjust prototype.
* rtlanal.c (dead_or_set_p): Change argument type to rtx_insn *.
(dead_or_set_regno_p): Likewise.

From-SVN: r242657

8 years agomake add_int_reg_note take rtx_insn *
Trevor Saunders [Mon, 21 Nov 2016 06:16:13 +0000 (06:16 +0000)]
make add_int_reg_note take rtx_insn *

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* rtl.h: Adjust prototype.
* rtlanal.c (add_int_reg_note): Change argument type to rtx_insn *.

From-SVN: r242656

8 years agomake prologue_epilogue_contains take a rtx_insn *
Trevor Saunders [Mon, 21 Nov 2016 06:16:08 +0000 (06:16 +0000)]
make prologue_epilogue_contains take a rtx_insn *

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* function.c (contains): Change argument type to rtx_insn *.
(prologue_contains): Likewise.
(epilogue_contains): Likewise.
(prologue_epilogue_contains): Likewise.
* function.h: Adjust prototype.

From-SVN: r242655

8 years agoremove cast from emit_libcall_block
Trevor Saunders [Mon, 21 Nov 2016 06:16:03 +0000 (06:16 +0000)]
remove cast from emit_libcall_block

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* optabs.c (emit_libcall_block): Change argument type to
rtx_insn *.
* optabs.h: Adjust prototype.

From-SVN: r242654

8 years agomake delete_insn () take a rtx_insn *
Trevor Saunders [Mon, 21 Nov 2016 06:15:58 +0000 (06:15 +0000)]
make delete_insn () take a rtx_insn *

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* cfgrtl.c (delete_insn): Change argument type to rtx_insn *.
(fixup_reorder_chain): Adjust.
* cfgrtl.h: Adjust prototype.

From-SVN: r242653

8 years agomake replace_label_in_insn take labels as rtx_insn *
Trevor Saunders [Mon, 21 Nov 2016 06:15:26 +0000 (06:15 +0000)]
make replace_label_in_insn take labels as rtx_insn *

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* rtl.h: Adjust prototype.
* rtlanal.c (replace_label_in_insn): Change argument type to
rtx_insn *.

From-SVN: r242652

8 years agomake recog () take a rtx_insn *
Trevor Saunders [Mon, 21 Nov 2016 06:15:08 +0000 (06:15 +0000)]
make recog () take a rtx_insn *

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* config/v850/v850.c (expand_prologue): Adjust.
(expand_epilogue): Likewise.
* expr.c (init_expr_target): Likewise.
* genrecog.c (print_subroutine): Always make the argument type
rtx_insn *.
* recog.h: Adjust prototype.

From-SVN: r242651

8 years agosplit up variables to use rtx_insn * more
Trevor Saunders [Mon, 21 Nov 2016 06:15:00 +0000 (06:15 +0000)]
split up variables to use rtx_insn * more

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): split
up variables to make some rtx_insn *.
* config/alpha/alpha.c (emit_unlikely_jump): Likewise.
* config/arc/arc.c: Likewise.
* config/arm/arm.c: Likewise.
* config/mn10300/mn10300.c (mn10300_legitimize_pic_address):
Likewise.
* config/rs6000/rs6000.c (rs6000_expand_split_stack_prologue):
Likewise.
* config/spu/spu.c (spu_emit_branch_hint): Likewise.

From-SVN: r242650

8 years agouse rtx_insn * more places where it is obvious
Trevor Saunders [Mon, 21 Nov 2016 06:14:52 +0000 (06:14 +0000)]
use rtx_insn * more places where it is obvious

gcc/ChangeLog:

2016-11-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* config/arm/arm.c (legitimize_pic_address): Change to use
rtx_insn * as the type of variables.
(arm_pic_static_addr): Likewise.
(arm_emit_movpair): Likewise.
* config/c6x/c6x.c (reorg_split_calls): Likewise.
* config/darwin.c (machopic_legitimize_pic_address): Likewise.
* config/frv/frv.c (frv_optimize_membar_local): Likewise.
* config/frv/frv.md: Likewise.
* config/i386/i386-protos.h: Likewise.
* config/i386/i386.c (ix86_expand_split_stack_prologue):
Likewise.
(ix86_split_fp_branch): Likewise.
(predict_jump): Likewise.
* config/ia64/ia64.c: Likewise.
* config/mcore/mcore.c: Likewise.
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
Likewise.
* config/s390/s390.c: Likewise.
* config/s390/s390.md: Likewise.
* config/spu/spu.md: Likewise.
* config/tilegx/tilegx.c (tilegx_legitimize_tls_address):
Likewise.
* lower-subreg.c (resolve_simple_move): Likewise.

From-SVN: r242649

8 years agore PR target/48551 (Following source code crashes the c++ compiler on coldfire platform.)
Jeff Law [Mon, 21 Nov 2016 05:29:36 +0000 (22:29 -0700)]
re PR target/48551 (Following source code crashes the c++ compiler on coldfire platform.)

2016-11-20  Jeff Law  <law@redhat.com>

PR target/48551
* reload.h (struct target_reload): Make x_double_reg_address_ok
be per-mode rather.
* reload.c (find_reloads_address): Check if double_reg_address_ok
is true for the mode of the memory reference.
* reload1.c (init_reload): Initialize double_reg_address_ok for
each mode.

PR target/48551
* gcc.target/m68k/pr48551.c: New test.

From-SVN: r242648

8 years agoPR objc++/78418 - ICE in string tests on darwin
Jason Merrill [Mon, 21 Nov 2016 04:41:21 +0000 (23:41 -0500)]
PR objc++/78418 - ICE in string tests on darwin

* tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P.

From-SVN: r242647

8 years agoDaily bump.
GCC Administrator [Mon, 21 Nov 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242646

8 years agore PR fortran/69741 (Bad error in forall with array loop counters)
Harald Anlauf [Sun, 20 Nov 2016 18:43:16 +0000 (18:43 +0000)]
re PR fortran/69741 (Bad error in forall with array loop counters)

2016-11-20  Harald Anlauf  <anlauf@gmx.de>

PR fortran/69741
* resolve.c (gfc_resolve_forall): Check for nonscalar index variables.

2016-11-20  Harald Anlauf  <anlauf@gmx.de>

PR fortran/69741
* gfortran.dg/forall_18.f90: New testcase.

From-SVN: r242641

8 years agoFix date on last ChangeLog entry.
Aldy Hernandez [Sun, 20 Nov 2016 18:35:37 +0000 (18:35 +0000)]
Fix date on last ChangeLog entry.

From-SVN: r242640

8 years agore PR middle-end/61409 (-Wmaybe-uninitialized false-positive with -O2)
Aldy Hernandez [Sun, 20 Nov 2016 18:34:06 +0000 (18:34 +0000)]
re PR middle-end/61409 (-Wmaybe-uninitialized false-positive with -O2)

PR middle-end/61409
* tree-ssa-uninit.c: Define new global max_phi_args.
(compute_uninit_opnds_pos): Use max_phi_args.
(prune_uninit_phi_opnds): Same.
(use_pred_not_overlap_with_undef_path_pred): Remove reference to
missing NUM_PREDS in function comment.
(can_one_predicate_be_invalidated_p): New.
(can_chain_union_be_invalidated_p): New.
(flatten_out_predicate_chains): New.
(uninit_ops_invalidate_phi_use): New.
(is_use_properly_guarded): Call uninit_ops_invalidate_phi_use.

From-SVN: r242639

8 years agoSimplify X /[ex] 8 == 0
Marc Glisse [Sun, 20 Nov 2016 15:32:37 +0000 (16:32 +0100)]
Simplify X /[ex] 8 == 0

2016-11-20  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* fold-const.c (fold_comparison): Ignore EXACT_DIV_EXPR.
* match.pd (A /[ex] B CMP C): New simplifications.

gcc/testsuite/
* gcc.dg/tree-ssa/cmpexactdiv.c: New file.

From-SVN: r242638

8 years agore PR fortran/78395 ([OOP] error on polymorphic assignment)
Andre Vehreschild [Sun, 20 Nov 2016 14:21:43 +0000 (15:21 +0100)]
re PR fortran/78395 ([OOP] error on polymorphic assignment)

gcc/testsuite/ChangeLog:

2016-11-20  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/78395
* gfortran.dg/typebound_operator_21.f03: New test.

gcc/fortran/ChangeLog:

2016-11-20  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/78395
* resolve.c (resolve_typebound_function): Prevent stripping of refs,
when the base-expression is a class' typed one.

From-SVN: r242637

8 years agoSimplify X / X, 0 / X and X % X
Marc Glisse [Sun, 20 Nov 2016 13:42:24 +0000 (14:42 +0100)]
Simplify X / X, 0 / X and X % X

2016-11-20  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (0 / X, X / X, X % X): New simplifications.

gcc/testsuite/
* gcc.dg/tree-ssa/divide-5.c: New file.

From-SVN: r242636

8 years agoProtect __TMC_END__ - __TMC_LIST__ == 0
Marc Glisse [Sun, 20 Nov 2016 13:35:27 +0000 (13:35 +0000)]
Protect __TMC_END__ - __TMC_LIST__ == 0

2016-11-20  Marc Glisse  <marc.glisse@inria.fr>

        PR libgcc/77813
        * crtstuff.c (deregister_tm_clones, register_tm_clones): Hide
        __TMC_END__ behind a passthrough asm.

From-SVN: r242635

8 years agoAdd PR sanitizer/78267 patch to libsanitizer/LOCAL_PATCHES
Rainer Orth [Sun, 20 Nov 2016 10:51:53 +0000 (10:51 +0000)]
Add PR sanitizer/78267 patch to libsanitizer/LOCAL_PATCHES

From-SVN: r242634

8 years agoFix libsanitizer build on OS X 10.1[01], macOS 10.12 (PR sanitizer/78267)
Rainer Orth [Sun, 20 Nov 2016 10:49:47 +0000 (10:49 +0000)]
Fix libsanitizer build on OS X 10.1[01], macOS 10.12 (PR sanitizer/78267)

fixincludes:
PR sanitizer/78267
* inclhack.def (darwin_availabilityinternal, darwin_os_trace_1)
(darwin_os_trace_2, darwin_os_trace_3): New fixes.
(hpux_stdint_least_fast): Remove spurious _EOFix_.
* fixincl.x: Regenerate.
* tests/bases/AvailabilityInternal.h: New file.
* tests/bases/os/trace.h: New file.

2016-11-20  Jack Howarth  <howarth.at.gcc@gmail.com>

libsanitizer:
PR sanitizer/78267
* sanitizer_common/sanitizer_mac.cc: Include <os/trace.h> only if
compiler supports blocks extension.

From-SVN: r242633

8 years agoDaily bump.
GCC Administrator [Sun, 20 Nov 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242632

8 years agocomp-goto-1.c (insn_t): Change offset to signed int.
Andreas Schwab [Sat, 19 Nov 2016 20:15:18 +0000 (20:15 +0000)]
comp-goto-1.c (insn_t): Change offset to signed int.

* gcc.c-torture/execute/comp-goto-1.c (insn_t): Change offset to
signed int.

From-SVN: r242629

8 years agoi386.c (ix86_can_inline_p): Use || instead of & when checking if callee's isa flags...
Jakub Jelinek [Sat, 19 Nov 2016 18:57:56 +0000 (19:57 +0100)]
i386.c (ix86_can_inline_p): Use || instead of & when checking if callee's isa flags are subset of caller's...

* config/i386/i386.c (ix86_can_inline_p): Use || instead of &
when checking if callee's isa flags are subset of caller's isa flags.
Fix comment wording.

From-SVN: r242628

8 years agoi386.c (ix86_valid_target_attribute_tree): Don't clear opts->x_ix86_isa_flags...
Jakub Jelinek [Sat, 19 Nov 2016 18:57:26 +0000 (19:57 +0100)]
i386.c (ix86_valid_target_attribute_tree): Don't clear opts->x_ix86_isa_flags...

* config/i386/i386.c (ix86_valid_target_attribute_tree): Don't
clear opts->x_ix86_isa_flags, clear opts->x_ix86_isa_flags2
instead and using = 0 instead of &= 0.

From-SVN: r242627

8 years agoi386.c (def_builtin, [...]): Formatting fixes.
Jakub Jelinek [Sat, 19 Nov 2016 18:56:47 +0000 (19:56 +0100)]
i386.c (def_builtin, [...]): Formatting fixes.

* config/i386/i386.c (def_builtin, def_builtin2, def_builtin_const2,
ix86_add_new_builtins): Formatting fixes.
(ix86_expand_builtin): Use || instead of && for isa vs. isa2.
(ix86_get_builtin): Likewise.

From-SVN: r242626

8 years agoi386.c (ix86_expand_builtin): Remove msk_mov variable...
Jakub Jelinek [Sat, 19 Nov 2016 18:56:16 +0000 (19:56 +0100)]
i386.c (ix86_expand_builtin): Remove msk_mov variable...

* config/i386/i386.c (ix86_expand_builtin): Remove msk_mov variable,
don't initialize it, don't use it for the case where it isn't
provable %{z} nor using the same argument, instead move merge
argument into a new pseudo and use that as target.  Formatting fixes.

From-SVN: r242625

8 years agocoarray_alloc_comp_1.f08: Add "-latomic" option if libatomic_available.
John David Anglin [Sat, 19 Nov 2016 18:14:21 +0000 (18:14 +0000)]
coarray_alloc_comp_1.f08: Add "-latomic" option if libatomic_available.

* gfortran.dg/coarray_alloc_comp_1.f08: Add "-latomic" option if
libatomic_available.
* gfortran.dg/coarray_alloc_comp_2.f08: Likewise.
* gfortran.dg/coarray_allocate_10.f08: Likewise.
* gfortran.dg/coarray_allocate_7.f08: Likewise.
* gfortran.dg/coarray_allocate_8.f08: Likewise.
* gfortran.dg/coarray_allocate_9.f08: Likewise.
* gfortran.dg/coarray_send_by_ref_1.f08: Likewise.
* gfortran.dg/coarray_stat_2.f90: Likewise.
* gfortran.dg/coindexed_1.f90: Likewise.

From-SVN: r242624

8 years agore PR target/25111 ([m68k] bset is not used for A = 1 << (B & 31) on ColdFire)
Jeff Law [Sat, 19 Nov 2016 17:52:04 +0000 (10:52 -0700)]
re PR target/25111 ([m68k] bset is not used for A = 1 << (B & 31) on ColdFire)

PR target/25111
* config/m68k/m68k.md (bsetdreg): New pattern.
(bchgdreg, bclrdreg): Likewise.

PR target/25111
* gcc.target/m68k/pr25111.c: New test.

From-SVN: r242623

8 years agore PR target/78426 (wrong code with strncmp on SH)
Kaz Kojima [Sat, 19 Nov 2016 13:59:47 +0000 (13:59 +0000)]
re PR target/78426 (wrong code with strncmp on SH)

PR target/78426
* config/sh/sh-mem.cc (sh_expand_cmpnstr): Use copy_to_mode_reg
instead of force_reg.
(sh_expand_setmem): Likewise.

From-SVN: r242622

8 years agoconfig.gcc (*-*-netbsd): Set use_gcc_stdint=wrap.
Krister Walfridsson [Sat, 19 Nov 2016 10:49:16 +0000 (10:49 +0000)]
config.gcc (*-*-netbsd): Set use_gcc_stdint=wrap.

2016-11-19  Krister Walfridsson  <krister.walfridsson@gmail.com>

* config.gcc (*-*-netbsd): Set use_gcc_stdint=wrap.

From-SVN: r242621

8 years agoTILE-Gx: Fix bundling when encountering consecutive barriers.
Walter Lee [Sat, 19 Nov 2016 02:34:17 +0000 (02:34 +0000)]
TILE-Gx: Fix bundling when encountering consecutive barriers.

        * config/tilegx/tilegx.c (tilegx_gen_bundles): Preserve
          end-of-bundle marker for consecutive barriers.

From-SVN: r242617

8 years agoTILE-Gx: fix clzsi2 for big-endian.
Walter Lee [Sat, 19 Nov 2016 02:30:41 +0000 (02:30 +0000)]
TILE-Gx: fix clzsi2 for big-endian.

        * config/tilegx/tilegx.md (clzsi2): Fix for big-endian.

From-SVN: r242616

8 years agoTILEPro: force gcc to link against libgcc.a when creating shared
Walter Lee [Sat, 19 Nov 2016 02:28:00 +0000 (02:28 +0000)]
TILEPro: force gcc to link against libgcc.a when creating shared
libraries.

        * config.host (tilepro*-*-linux*): Add t-slibgcc-libgcc.

From-SVN: r242615

8 years agoDaily bump.
GCC Administrator [Sat, 19 Nov 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242613

8 years agore PR c++/68180 ([ICE] at cp/constexpr.c:2768 in initializing __vector in a loop)
Jakub Jelinek [Fri, 18 Nov 2016 23:51:30 +0000 (00:51 +0100)]
re PR c++/68180 ([ICE]  at cp/constexpr.c:2768 in initializing __vector in a loop)

PR c++/68180
* g++.dg/cpp1y/pr68180.C: Add -Wno-psabi as dg-additional-options.

From-SVN: r242610

8 years agore PR middle-end/78419 (ICE with target_clone on invalid target)
Jakub Jelinek [Fri, 18 Nov 2016 22:21:31 +0000 (23:21 +0100)]
re PR middle-end/78419 (ICE with target_clone on invalid target)

PR middle-end/78419
* multiple_target.c (get_attr_len): Start with argnum and increment
argnum on every arg.  Use strchr in a loop instead of counting commas
manually.
(get_attr_str): Increment argnum for every comma in the string.
(separate_attrs): Use for instead of while loop, simplify.
(expand_target_clones): Rename defenition argument to definition.
Free attrs and attr_str even when diagnosing errors.  Temporarily
change input_location around targetm.target_option.valid_attribute_p
calls.  Don't emit warning or errors if that function fails.

* gcc.target/i386/pr78419.c: New test.

From-SVN: r242608

8 years agore PR c++/77285 (extern thread_local linkage)
Jakub Jelinek [Fri, 18 Nov 2016 21:56:50 +0000 (22:56 +0100)]
re PR c++/77285 (extern thread_local linkage)

PR c++/77285
* mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call
check_abi_tags.

* g++.dg/tls/pr77285-1.C: New test.
* g++.dg/tls/pr77285-2.C: New test.

From-SVN: r242607

8 years agore PR debug/78191 (ICE in calc_die_sizes)
Jakub Jelinek [Fri, 18 Nov 2016 21:55:46 +0000 (22:55 +0100)]
re PR debug/78191 (ICE in calc_die_sizes)

* dwarf2out.c (size_of_discr_list): Fix typo in function comment.

PR debug/78191
* dwarf2out.c (abbrev_opt_base_type_end): New variable.
(die_abbrev_cmp): Sort dies with die_abbrev smaller than
abbrev_opt_base_type_end only by increasing die_abbrev, before
any other dies.
(optimize_abbrev_table): Don't change abbrev numbers of
base types and CU or optimize implicit consts in them if
calc_base_type_die_sizes has been called during build_abbrev_table.
(calc_base_type_die_sizes): If abbrev_opt_start, set
abbrev_opt_base_type_end to one plus largest base type's
die_abbrev.

From-SVN: r242606

8 years agore PR target/25112 ([m68k] Suboptimal equality comparisons with small integers)
Jeff Law [Fri, 18 Nov 2016 21:52:32 +0000 (14:52 -0700)]
re PR target/25112 ([m68k] Suboptimal equality comparisons with small integers)

PR target/25112
* config/m68k/m68k.c (moveq feeding equality comparison): New
peepholes.
* config/m68k/predicates.md (addq_subq_operand): New predicate.
(equality_comparison_operator): Likewise.

PR target/25112
* gcc.target/m68k/pr25112: New test.

From-SVN: r242605

8 years agoPR c++/67631 - list-init and explicit conversions
Jason Merrill [Fri, 18 Nov 2016 20:27:26 +0000 (15:27 -0500)]
PR c++/67631 - list-init and explicit conversions

* semantics.c (finish_compound_literal): Call digest_init_flags.
* typeck2.c (digest_init_flags): Add complain parm.
(store_init_value): Pass it.

From-SVN: r242603

8 years agopr71179.c: Prune ABI message.
David Edelsohn [Fri, 18 Nov 2016 18:41:37 +0000 (18:41 +0000)]
pr71179.c: Prune ABI message.

        * gcc.dg/tree-ssa/pr71179.c: Prune ABI message.
        * gcc.dg/tree-ssa/ssa-fre-55.c: Same.

From-SVN: r242602

8 years agoMake load_extend_op an inline function
Richard Sandiford [Fri, 18 Nov 2016 18:26:34 +0000 (18:26 +0000)]
Make load_extend_op an inline function

gcc/
* rtlanal.c (load_extend_op): Move to...
* rtl.h: ...here and make inline.

From-SVN: r242601

8 years agoruntime: move schedt type and sched var from C to Go
Ian Lance Taylor [Fri, 18 Nov 2016 17:48:29 +0000 (17:48 +0000)]
runtime: move schedt type and sched var from C to Go

    This doesn't change any actual code, it just starts using the Go
    definition of the schedt type and the sched variable rather than the C
    definitions.

    The schedt type is tweaked slightly for gccgo.  We aren't going to
    release goroutine stacks, so we don't need separate gfreeStack and
    gfreeNostack lists.  We only have one size of defer function, so we
    don't need a list of 5 different pools.

    Reviewed-on: https://go-review.googlesource.com/33364

From-SVN: r242600

8 years ago[ARM] Optional -mthumb for Thumb only targets
Thomas Preud'homme [Fri, 18 Nov 2016 16:45:37 +0000 (16:45 +0000)]
[ARM] Optional -mthumb for Thumb only targets

2016-11-18  Terry Guo  <terry.guo@arm.com>
            Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * common/config/arm/arm-common.c (arm_target_thumb_only): New function.
    * config/arm/arm-opts.h: Include arm-flags.h.
    (struct arm_arch_core_flag): Define.
    (arm_arch_core_flags): Define.
    * config/arm/arm-protos.h: Include arm-flags.h
    (FL_NONE, FL_ANY, FL_CO_PROC, FL_ARCH3M, FL_MODE26, FL_MODE32,
    FL_ARCH4, FL_ARCH5, FL_THUMB, FL_LDSCHED, FL_STRONG, FL_ARCH5E,
    FL_XSCALE, FL_ARCH6, FL_VFPV2, FL_WBUF, FL_ARCH6K, FL_THUMB2, FL_NOTM,
    FL_THUMB_DIV, FL_VFPV3, FL_NEON, FL_ARCH7EM, FL_ARCH7, FL_ARM_DIV,
    FL_ARCH8, FL_CRC32, FL_SMALLMUL, FL_NO_VOLATILE_CE, FL_IWMMXT,
    FL_IWMMXT2, FL_ARCH6KZ, FL2_ARCH8_1, FL2_ARCH8_2, FL2_FP16INST,
    FL_TUNE, FL_FOR_ARCH2, FL_FOR_ARCH3, FL_FOR_ARCH3M, FL_FOR_ARCH4,
    FL_FOR_ARCH4T, FL_FOR_ARCH5, FL_FOR_ARCH5T, FL_FOR_ARCH5E,
    FL_FOR_ARCH5TE, FL_FOR_ARCH5TEJ, FL_FOR_ARCH6, FL_FOR_ARCH6J,
    FL_FOR_ARCH6K, FL_FOR_ARCH6Z, FL_FOR_ARCH6ZK, FL_FOR_ARCH6KZ,
    FL_FOR_ARCH6T2, FL_FOR_ARCH6M, FL_FOR_ARCH7, FL_FOR_ARCH7A,
    FL_FOR_ARCH7VE, FL_FOR_ARCH7R, FL_FOR_ARCH7M, FL_FOR_ARCH7EM,
    FL_FOR_ARCH8A, FL2_FOR_ARCH8_1A, FL2_FOR_ARCH8_2A, FL_FOR_ARCH8M_BASE,
    FL_FOR_ARCH8M_MAIN, arm_feature_set, ARM_FSET_MAKE,
    ARM_FSET_MAKE_CPU1, ARM_FSET_MAKE_CPU2, ARM_FSET_CPU1, ARM_FSET_CPU2,
    ARM_FSET_EMPTY, ARM_FSET_ANY, ARM_FSET_HAS_CPU1, ARM_FSET_HAS_CPU2,
    ARM_FSET_HAS_CPU, ARM_FSET_ADD_CPU1, ARM_FSET_ADD_CPU2,
    ARM_FSET_DEL_CPU1, ARM_FSET_DEL_CPU2, ARM_FSET_UNION, ARM_FSET_INTER,
    ARM_FSET_XOR, ARM_FSET_EXCLUDE, ARM_FSET_IS_EMPTY,
    ARM_FSET_CPU_SUBSET): Move to ...
    * config/arm/arm-flags.h: This new file.
    * config/arm/arm.h (TARGET_MODE_SPEC_FUNCTIONS): Define.
    (EXTRA_SPEC_FUNCTIONS): Add TARGET_MODE_SPEC_FUNCTIONS to its value.
    (TARGET_MODE_SPECS): Define.
    (DRIVER_SELF_SPECS): Add TARGET_MODE_SPECS to its value.

    gcc/testsuite/
    * gcc.target/arm/optional_thumb-1.c: New test.
    * gcc.target/arm/optional_thumb-2.c: New test.
    * gcc.target/arm/optional_thumb-3.c: New test.

From-SVN: r242597

8 years agoMake arm_feature_set agree with type of FL_* macros
Thomas Preud'homme [Fri, 18 Nov 2016 16:45:26 +0000 (16:45 +0000)]
Make arm_feature_set agree with type of FL_* macros

2016-11-18  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm-protos.h (FL_NONE, FL_ANY, FL_CO_PROC, FL_ARCH3M,
    FL_MODE26, FL_MODE32, FL_ARCH4, FL_ARCH5, FL_THUMB, FL_LDSCHED,
    FL_STRONG, FL_ARCH5E, FL_XSCALE, FL_ARCH6, FL_VFPV2, FL_WBUF,
    FL_ARCH6K, FL_THUMB2, FL_NOTM, FL_THUMB_DIV, FL_VFPV3, FL_NEON,
    FL_ARCH7EM, FL_ARCH7, FL_ARM_DIV, FL_ARCH8, FL_CRC32, FL_SMALLMUL,
    FL_NO_VOLATILE_CE, FL_IWMMXT, FL_IWMMXT2, FL_ARCH6KZ, FL2_ARCH8_1,
    FL2_ARCH8_2, FL2_FP16INST): Reindent comment, add final dot when
    missing and make value unsigned.
    (arm_feature_set): Use unsigned entries instead of unsigned long.

From-SVN: r242596

8 years agoMAINTAINERS (Write After Approval): Add myself.
Toma Tabacu [Fri, 18 Nov 2016 16:34:13 +0000 (16:34 +0000)]
MAINTAINERS (Write After Approval): Add myself.

2016-11-18  Toma Tabacu  <toma.tabacu@imgtec.com>

* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r242595

8 years agoruntime: don't call __go_alloc/__go_free in environment functions
Ian Lance Taylor [Fri, 18 Nov 2016 16:03:13 +0000 (16:03 +0000)]
runtime: don't call __go_alloc/__go_free in environment functions

    Reviewed-on: https://go-review.googlesource.com/33363

From-SVN: r242594

8 years agolibgo: remove old/regexp and old/template
Ian Lance Taylor [Fri, 18 Nov 2016 14:51:13 +0000 (14:51 +0000)]
libgo: remove old/regexp and old/template

    They were removed from the master Go library in 2012
    (https://golang.org/cl/5979046) but somehow that was not reflected here.

    Reviewed-on: https://go-review.googlesource.com/33391

From-SVN: r242592

8 years agoS/390: Lower requirements for successful htm tests.
Dominik Vogt [Fri, 18 Nov 2016 14:50:27 +0000 (14:50 +0000)]
S/390: Lower requirements for successful htm tests.

The attached patch makes the htm tests on s390 less sensitive to
spurious abort.  Please check the commit comment for details.  The
modified tests have been run once on a zEC12.

gcc/ChangeLog:

2016-11-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (rs6000_stack_info): PR/77359: Properly align
local variables in functions calling alloca.  Also update the ASCII
drawings
* config/rs6000/rs6000.h (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET):
PR/77359: Likewise.
* config/rs6000/aix.h (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET):
PR/77359: Copy AIX specific versions of the rs6000.h macros to aix.h.

From-SVN: r242591

8 years agoRe-apply: Drop excess size used for run time allocated stack variables.
Dominik Vogt [Fri, 18 Nov 2016 14:44:54 +0000 (14:44 +0000)]
Re-apply: Drop excess size used for run time allocated stack variables.

The patch got reverted after hitting PR77359 which turned out to be a
rs6000 backend problem.  Reapplying after the PR got fixed.

gcc/ChangeLog:

2016-11-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>

Re-apply after PR bootstrap/77359 is fixed:
2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>

        * explow.c (get_dynamic_stack_size): Take known alignment of stack
        pointer + STACK_DYNAMIC_OFFSET into account when calculating the
        size needed.

--This line, and those below, will be
ignored--

M    gcc/ChangeLog
M    gcc/explow.c

From-SVN: r242590

8 years agoRS6000: Fix PR 77359: Properly align local variables in functions calling alloca.
Dominik Vogt [Fri, 18 Nov 2016 14:28:49 +0000 (14:28 +0000)]
RS6000: Fix PR 77359: Properly align local variables in functions calling alloca.

gcc/ChangeLog:

2016-11-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (rs6000_stack_info): PR/77359: Properly align
local variables in functions calling alloca.  Also update the ASCII
drawings
* config/rs6000/rs6000.h (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET):
PR/77359: Likewise.
* config/rs6000/aix.h (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET):
PR/77359: Copy AIX specific versions of the rs6000.h macros to aix.h.

From-SVN: r242589

8 years agoMIPS: Check for sysroot support when upgrading/downgrading test options
Andrew Bennett [Fri, 18 Nov 2016 12:34:19 +0000 (12:34 +0000)]
MIPS: Check for sysroot support when upgrading/downgrading test options

gcc/testsuite/

* gcc.target/mips/inline-memcpy-1.c (dg-options): Add
(REQUIRES_STDLIB).
* gcc.target/mips/inline-memcpy-2.c: Ditto.
* gcc.target/mips/inline-memcpy-3.c: Ditto.
* gcc.target/mips/inline-memcpy-4.c: Ditto.
* gcc.target/mips/inline-memcpy-5.c: Ditto.
* gcc.target/mips/loongson-shift-count-truncated-1.c: Ditto.
* gcc.target/mips/loongson-simd.c: Ditto.
* gcc.target/mips/memcpy-1.c: Ditto.
* gcc.target/mips/mips-3d-1.c: Ditto.
* gcc.target/mips/mips-3d-2.c: Ditto.
* gcc.target/mips/mips-3d-3.c: Ditto.
* gcc.target/mips/mips-3d-4.c: Ditto.
* gcc.target/mips/mips-3d-5.c: Ditto.
* gcc.target/mips/mips-3d-6.c: Ditto.
* gcc.target/mips/mips-3d-7.c: Ditto.
* gcc.target/mips/mips-3d-8.c: Ditto.
* gcc.target/mips/mips-3d-9.c: Ditto.
* gcc.target/mips/mips-ps-1.c: Ditto.
* gcc.target/mips/mips-ps-2.c: Ditto.
* gcc.target/mips/mips-ps-3.c: Ditto.
* gcc.target/mips/mips-ps-4.c: Ditto.
* gcc.target/mips/mips-ps-6.c: Ditto.
* gcc.target/mips/mips16-attributes.c: Ditto.
* gcc.target/mips/mips32-dsp-run.c: Ditto.
* gcc.target/mips/mips32-dsp.c: Ditto.
* gcc.target/mips/save-restore-1.c: Ditto.
* gcc.target/mips/mips.exp (mips_option_groups): Add stdlib.
(mips_preprocess): Add ignore_output argument that when set
will not return the pre-processed output.
(mips_arch_info): Update arguments for the call to
mips_preprocess.
(mips-dg-init): Ditto.
(mips-dg-options): Check if a test having test option
(REQUIRES_STDLIB) has the required sysroot support for
the current test options.

Co-Authored-By: Toma Tabacu <toma.tabacu@imgtec.com>
From-SVN: r242587

8 years agoUse rtx_mode_t instead of std::make_pair
Richard Sandiford [Fri, 18 Nov 2016 10:04:53 +0000 (10:04 +0000)]
Use rtx_mode_t instead of std::make_pair

This change makes the code less sensitive to the exact type of the mode,
i.e. it forces a conversion where necessary.  This becomes important
when wrappers like scalar_int_mode and scalar_mode can also be used
instead of machine_mode.

Using rtx_mode_t also abstracts away the representation.  The fact that
it's a std::pair rather than a custom class isn't important to users of
the interface.

gcc/
2016-11-18  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* combine.c (try_combine): Use rtx_mode_t instead of std::make_pair.
* dwarf2out.c (mem_loc_descriptor, loc_descriptor): Likewise.
(add_const_value_attribute): Likewise.
* explow.c (plus_constant): Likewise.
* expmed.c (expand_mult, make_tree): Likewise.
* expr.c (convert_modes): Likewise.
* loop-doloop.c (doloop_optimize): Likewise.
* postreload.c (reload_cse_simplify_set): Likewise.
* simplify-rtx.c (simplify_const_unary_operation): Likewise.
(simplify_binary_operation_1, simplify_const_binary_operation):
(simplify_const_relational_operation, simplify_immed_subreg): Likewise.
* wide-int.h: Update documentation to recommend rtx_mode_t
instead of std::make_pair.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r242586

8 years agoAdd SET_DECL_MODE
Richard Sandiford [Fri, 18 Nov 2016 10:03:12 +0000 (10:03 +0000)]
Add SET_DECL_MODE

This may no longer be necessary with the current version
of the SVE patches, but it does at least make things consistent
with the TYPE_MODE/SET_TYPE_MODE split.

gcc/ada/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      Alan Hayward  <alan.hayward@arm.com>
      David Sherwood  <david.sherwood@arm.com>

* gcc-interface/utils.c (create_label_decl): Use SET_DECL_MODE.

gcc/c/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      Alan Hayward  <alan.hayward@arm.com>
      David Sherwood  <david.sherwood@arm.com>

* c-decl.c (merge_decls): Use SET_DECL_MODE.
(make_label, finish_struct): Likewise.

gcc/cp/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      Alan Hayward  <alan.hayward@arm.com>
      David Sherwood  <david.sherwood@arm.com>

* class.c (finish_struct_bits): Use SET_DECL_MODE.
(build_base_field_1, layout_class_type, finish_struct_1): Likewise.
* decl.c (make_label_decl): Likewise.
* pt.c (tsubst_decl): Likewise.

gcc/fortran/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      Alan Hayward  <alan.hayward@arm.com>
      David Sherwood  <david.sherwood@arm.com>

* trans-common.c (build_common_decl): Use SET_DECL_MODE.
* trans-decl.c (gfc_build_label_decl): Likewise.
* trans-types.c (gfc_get_array_descr_info): Likewise.

gcc/lto/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      Alan Hayward  <alan.hayward@arm.com>
      David Sherwood  <david.sherwood@arm.com>

* lto.c (offload_handle_link_vars): Use SET_DECL_MODE.

gcc/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      Alan Hayward  <alan.hayward@arm.com>
      David Sherwood  <david.sherwood@arm.com>

* tree.h (SET_DECL_MODE): New macro.
* cfgexpand.c (avoid_deep_ter_for_debug): Use SET_DECL_MODE.
(expand_gimple_basic_block): Likewise.
* function.c (split_complex_args): Likeise.
* ipa-prop.c (ipa_modify_call_arguments): Likewise.
* omp-simd-clone.c (ipa_simd_modify_stmt_ops): Likewise.
* stor-layout.c (layout_decl, relayout_decl): Likewise.
(finish_bitfield_representative): Likewise.
* tree.c (make_node_stat): Likewise.
* tree-inline.c (remap_ssa_name): Likewise.
(tree_function_versioning): Likewise.
* tree-into-ssa.c (rewrite_debug_stmt_uses): Likewise.
* tree-sra.c (sra_ipa_reset_debug_stmts): Likewise.
* tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise.
* tree-ssa-loop-ivopts.c (remove_unused_ivs): Likewise.
* tree-ssa.c (insert_debug_temp_for_var_def): Likewise.
* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
* varasm.c (make_debug_expr_from_rtl): Likewise.

libcc1/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      Alan Hayward  <alan.hayward@arm.com>
      David Sherwood  <david.sherwood@arm.com>

* plugin.cc (plugin_build_add_field): Use SET_DECL_MODE.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r242585

8 years agobb-reorder: Improve compgotos pass (PR71785)
Segher Boessenkool [Fri, 18 Nov 2016 09:14:52 +0000 (10:14 +0100)]
bb-reorder: Improve compgotos pass (PR71785)

For code like the testcase in PR71785 GCC factors all the indirect branches
to a single dispatcher that then everything jumps to.  This is because
having many indirect branches with each many jump targets does not scale
in large parts of the compiler.  Very late in the pass pipeline (right
before peephole2) the indirect branches are then unfactored again, by
the duplicate_computed_gotos pass.

This pass works by replacing branches to such a common dispatcher by a
copy of the dispatcher.  For code like this testcase this does not work
so well: most cases do a single addition instruction right before the
dispatcher, but not all, and we end up with only two indirect jumps: the
one without the addition, and the one with the addition in its own basic
block, and now everything else jumps _there_.

This patch rewrites the algorithm to deal with this.  It also makes it
simpler: it does not need the "candidates" array anymore, it does not
need RTL layout mode, it does not need cleanup_cfg, and it does not
need to keep track of what blocks it already visited.

PR rtl-optimization/71785
* bb-reorder.c (maybe_duplicate_computed_goto): New function.
(duplicate_computed_gotos): New function.
(pass_duplicate_computed_gotos::execute): Rewrite.

From-SVN: r242584

8 years agoCorrect gcc/go/gofrontend/lex.cc and libgo/aclocal.m4 to the versions in the gofronte...
Ian Lance Taylor [Fri, 18 Nov 2016 04:15:46 +0000 (04:15 +0000)]
Correct gcc/go/gofrontend/lex.cc and libgo/aclocal.m4 to the versions in the gofrontend repo...

Correct gcc/go/gofrontend/lex.cc and libgo/aclocal.m4 to the versions
in the gofrontend repo, which is supposed to be the master copy.

Remove a few files in libgo that somehow were not deleted in the past.

From-SVN: r242583