re PR tree-optimization/92262 (ICE: verify_gimple failed (error: incorrect sharing of tree nodes))
PR tree-optimization/92262 * tree-ssa-loop-ivopts.c (get_debug_computation_at): Don't unshare ubase or cbase here. (remove_unused_ivs): Unshare comp before using it. * g++.dg/opt/pr92262.C: New test. From-SVN: r277605
This commit is contained in:
parent
fd776d2834
commit
9f33e12137
4 changed files with 136 additions and 40 deletions
|
@ -1,3 +1,10 @@
|
|||
2019-10-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/92262
|
||||
* tree-ssa-loop-ivopts.c (get_debug_computation_at): Don't unshare
|
||||
ubase or cbase here.
|
||||
(remove_unused_ivs): Unshare comp before using it.
|
||||
|
||||
2019-10-30 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* ipa-prop.c (update_jump_functions_after_inlining):
|
||||
|
@ -9459,24 +9466,24 @@
|
|||
* config/i386/i386-builtins.c (processor_model) :
|
||||
Add M_INTEL_COREI7_TIGERLAKE and M_INTEL_COREI7_COOPERLAKE.
|
||||
(arch_names_table): Add tigerlake and cooperlake.
|
||||
(get_builtin_code_for_version) : Handle PROCESSOR_TIGERLAKE
|
||||
(get_builtin_code_for_version): Handle PROCESSOR_TIGERLAKE
|
||||
and PROCESSOR_COOPERLAKE.
|
||||
* config/i386/i386-c.c
|
||||
(ix86_target_macros_internal): Handle tigerlake and cooperlake.
|
||||
* config/i386/i386-options.c
|
||||
(m_TIGERLAKE) : Define.
|
||||
(m_COOPERLAKE) : Ditto.
|
||||
(m_TIGERLAKE): Define.
|
||||
(m_COOPERLAKE): Ditto.
|
||||
(m_CORE_AVX512): Ditto.
|
||||
(processor_cost_table): Add cascadelake.
|
||||
(ix86_option_override_internal): Hadle PTA_MOVDIRI, PTA_MOVDIR64B.
|
||||
* config/i386/i386.h
|
||||
(ix86_size_cost) : Define TARGET_TIGERLAKE and TARGET_COOPERLAKE.
|
||||
(processor_type) : Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
|
||||
(ix86_size_cost): Define TARGET_TIGERLAKE and TARGET_COOPERLAKE.
|
||||
(processor_type): Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
|
||||
(PTA_MOVDIRI): Ditto.
|
||||
(PTA_MOVDIR64B): Ditto.
|
||||
(PTA_COOPERLAKE) : Ditto.
|
||||
(PTA_TIGERLAKE) : Ditto.
|
||||
(processor_type) : Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
|
||||
(PTA_COOPERLAKE): Ditto.
|
||||
(PTA_TIGERLAKE): Ditto.
|
||||
(processor_type): Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
|
||||
* doc/extend.texi: Add tigerlake and cooperlake.
|
||||
* doc/invoke.texi: Add tigerlake and cooperlake.
|
||||
|
||||
|
@ -23009,7 +23016,7 @@
|
|||
2019-04-08 wu yuan <wuyuan5@huawei.com>
|
||||
|
||||
* config/aarch64/aarch64-cores.def (tsv1100): Change scheduling model.
|
||||
* config/aarch64/aarch64.md : Add "tsv110.md"
|
||||
* config/aarch64/aarch64.md: Add "tsv110.md".
|
||||
* config/aarch64/tsv110.md: New file.
|
||||
|
||||
2019-04-08 Richard Biener <rguenther@suse.de>
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2019-10-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/92262
|
||||
* g++.dg/opt/pr92262.C: New test.
|
||||
|
||||
2019-10-30 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/65930
|
||||
|
@ -319,8 +324,8 @@
|
|||
2019-10-27 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/86248
|
||||
* gfortran.dg/char_result_19.f90 : New test.
|
||||
* gfortran.dg/char_result_mod_19.f90 : Module for the new test.
|
||||
* gfortran.dg/char_result_19.f90: New test.
|
||||
* gfortran.dg/char_result_mod_19.f90: Module for the new test.
|
||||
|
||||
2019-10-26 Hongtao Liu <hongtao.liu@intel.com>
|
||||
|
||||
|
@ -1424,9 +1429,9 @@
|
|||
2019-10-05 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/91926
|
||||
* gfortran.dg/ISO_Fortran_binding_13.f90 : New test.
|
||||
* gfortran.dg/ISO_Fortran_binding_13.c : Additional source.
|
||||
* gfortran.dg/ISO_Fortran_binding_14.f90 : New test.
|
||||
* gfortran.dg/ISO_Fortran_binding_13.f90: New test.
|
||||
* gfortran.dg/ISO_Fortran_binding_13.c: Additional source.
|
||||
* gfortran.dg/ISO_Fortran_binding_14.f90: New test.
|
||||
|
||||
2019-10-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -1815,7 +1820,7 @@
|
|||
2019-09-29 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/91726
|
||||
* gfortran.dg/coarray_poly_9.f90 : New test.
|
||||
* gfortran.dg/coarray_poly_9.f90: New test.
|
||||
|
||||
2019-09-29 Kewen Lin <linkw@gcc.gnu.org>
|
||||
|
||||
|
@ -2047,8 +2052,8 @@
|
|||
2019-09-23 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/91729
|
||||
* gfortran.dg/select_rank_2.f90 : Add two more errors in foo2.
|
||||
* gfortran.dg/select_rank_3.f90 : New test.
|
||||
* gfortran.dg/select_rank_2.f90: Add two more errors in foo2.
|
||||
* gfortran.dg/select_rank_3.f90: New test.
|
||||
|
||||
2019-09-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
|
@ -2415,7 +2420,7 @@
|
|||
2019-09-17 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/91588
|
||||
* gfortran.dg/associate_49.f90 : New test.
|
||||
* gfortran.dg/associate_49.f90: New test.
|
||||
|
||||
2019-09-17 Yannick Moy <moy@adacore.com>
|
||||
|
||||
|
@ -2544,7 +2549,7 @@
|
|||
2019-09-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/91717
|
||||
* gfortran.dg/dependency_55.f90 : New test.
|
||||
* gfortran.dg/dependency_55.f90: New test.
|
||||
|
||||
2019-09-12 Uroš Bizjak <ubizjak@gmail.com>
|
||||
|
||||
|
@ -3477,7 +3482,7 @@
|
|||
2019-09-02 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/91589
|
||||
* gfortran.dg/pr91589.f90 : New test.
|
||||
* gfortran.dg/pr91589.f90: New test.
|
||||
|
||||
2019-09-02 Steven G. Kargl <kargl@gc.gnu.org>
|
||||
|
||||
|
@ -3521,8 +3526,8 @@
|
|||
|
||||
2019-09-01 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
* gfortran.dg/select_rank_1.f90 : New test.
|
||||
* gfortran.dg/select_rank_2.f90 : New test.
|
||||
* gfortran.dg/select_rank_1.f90: New test.
|
||||
* gfortran.dg/select_rank_2.f90: New test.
|
||||
|
||||
2019-09-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -6485,7 +6490,7 @@
|
|||
2019-07-07 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/91077
|
||||
* gfortran.dg/pointer_array_11.f90 : New test.
|
||||
* gfortran.dg/pointer_array_11.f90: New test.
|
||||
|
||||
2019-07-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -8133,12 +8138,12 @@
|
|||
019-06-09 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/89365
|
||||
* gfortran.dg/assumed_rank_bounds_3.f90 : New test.
|
||||
* gfortran.dg/assumed_rank_bounds_3.f90: New test.
|
||||
|
||||
2019-06-08 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/90786
|
||||
* gfortran.dg/proc_ptr_51.f90 : New test.
|
||||
* gfortran.dg/proc_ptr_51.f90: New test.
|
||||
|
||||
2019-06-08 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
|
@ -8873,7 +8878,7 @@
|
|||
* gcc.target/i386/pr82699-6.c: Likewise.
|
||||
* gcc.target/i386/returninst1.c: Likewise.
|
||||
* gcc.target/i386/returninst2.c: Likewise.
|
||||
* gcc.target/i386/returninst3.c : Likewise.
|
||||
* gcc.target/i386/returninst3.c: Likewise.
|
||||
|
||||
2019-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
|
||||
|
||||
|
@ -9239,7 +9244,7 @@
|
|||
2019-05-19 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/90498
|
||||
* gfortran.dg/associate_48.f90 : New test.
|
||||
* gfortran.dg/associate_48.f90: New test.
|
||||
|
||||
2019-05-19 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
|
@ -12799,21 +12804,21 @@
|
|||
2019-02-23 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/88117
|
||||
* gfortran.dg/deferred_character_32.f90 : New test
|
||||
* gfortran.dg/deferred_character_32.f90: New test.
|
||||
|
||||
2019-02-23 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/89385
|
||||
* gfortran.dg/ISO_Fortran_binding_1.f90 : Correct test for
|
||||
* gfortran.dg/ISO_Fortran_binding_1.f90: Correct test for
|
||||
previously incorrect lbound for allocatable expressions. Also
|
||||
correct stop values to avoid repetition.
|
||||
* gfortran.dg/ISO_Fortran_binding_5.f90 : New test
|
||||
* gfortran.dg/ISO_Fortran_binding_5.c : Support previous test.
|
||||
* gfortran.dg/ISO_Fortran_binding_5.f90: New test
|
||||
* gfortran.dg/ISO_Fortran_binding_5.c: Support previous test.
|
||||
|
||||
PR fortran/89366
|
||||
* gfortran.dg/ISO_Fortran_binding_6.f90 : New test
|
||||
* gfortran.dg/ISO_Fortran_binding_6.c : Support previous test.
|
||||
* gfortran.dg/pr32599.f03 : Set standard to F2008.
|
||||
* gfortran.dg/ISO_Fortran_binding_6.f90: New test.
|
||||
* gfortran.dg/ISO_Fortran_binding_6.c: Support previous test.
|
||||
* gfortran.dg/pr32599.f03: Set standard to F2008.
|
||||
|
||||
2019-02-22 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
|
@ -13453,7 +13458,7 @@
|
|||
2019-02-09 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/89200
|
||||
* gfortran.dg/array_reference_2.f90 : New test.
|
||||
* gfortran.dg/array_reference_2.f90: New test.
|
||||
|
||||
2019-02-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -13713,17 +13718,17 @@
|
|||
2019-02-02 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/88393
|
||||
* gfortran.dg/alloc_comp_assign_16.f03 : New test.
|
||||
* gfortran.dg/alloc_comp_assign_16.f03: New test.
|
||||
|
||||
2019-02-02 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/88980
|
||||
* gfortran.dg/realloc_on_assign_32.f90 : New test.
|
||||
* gfortran.dg/realloc_on_assign_32.f90: New test.
|
||||
|
||||
2019-02-02 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/88685
|
||||
* gfortran.dg/pointer_array_component_3.f90 : New test.
|
||||
* gfortran.dg/pointer_array_component_3.f90: New test.
|
||||
|
||||
2019-02-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
|
85
gcc/testsuite/g++.dg/opt/pr92262.C
Normal file
85
gcc/testsuite/g++.dg/opt/pr92262.C
Normal file
|
@ -0,0 +1,85 @@
|
|||
// PR tree-optimization/92262
|
||||
// { dg-do compile { target c++11 } }
|
||||
// { dg-options "-O2 -ftree-loop-distribution -g" }
|
||||
|
||||
struct A;
|
||||
struct B { template <typename T> using b = T *; };
|
||||
template <typename, typename T> using c = B::b<T>;
|
||||
void *operator new (__SIZE_TYPE__, void *p) { return p; }
|
||||
struct C {
|
||||
template <typename T, typename... U> void
|
||||
foo (T *x, U... y) { new (x) T(y...); }
|
||||
};
|
||||
template <typename> class D : public C {};
|
||||
template <typename> struct E;
|
||||
template <typename T> struct E<D<T>> {
|
||||
using e = D<T>;
|
||||
template <typename U> using f = D<U>;
|
||||
template <typename U, typename... V>
|
||||
static void
|
||||
bar (e x, U y, V... z) { x.foo (y, z...); }
|
||||
};
|
||||
template <typename T> struct F : E<T> {
|
||||
template <typename U> struct G { typedef typename E<T>::template f<U> O; };
|
||||
};
|
||||
template <typename T, typename U, typename V> void
|
||||
baz (T x, U y, V z)
|
||||
{
|
||||
F<V>::bar (z, y, *x);
|
||||
}
|
||||
struct H {
|
||||
typedef c<int, A> I;
|
||||
typedef c<int, I> J;
|
||||
I i;
|
||||
J j;
|
||||
void qux (J x) { j = x; }
|
||||
};
|
||||
template <typename>
|
||||
struct K {
|
||||
K(D<A> x) : k (x) {}
|
||||
typedef H::J L;
|
||||
struct M { L m; H n, o; };
|
||||
struct N : F<D<int>>::G<A>::O, M { N (F<D>::G<A>::O); };
|
||||
void quux ();
|
||||
N k;
|
||||
};
|
||||
template <typename T>
|
||||
void
|
||||
K<T>::quux ()
|
||||
{
|
||||
L K (k.m - 1);
|
||||
k.n.qux (K);
|
||||
}
|
||||
template <typename, typename = int>
|
||||
struct P : K<int> {
|
||||
template <typename T>
|
||||
P (T x, T, D<A> y = D<A> ()) : K (y) { corge (x); }
|
||||
template <typename T> void corge (T);
|
||||
typedef L L;
|
||||
};
|
||||
template <typename T, typename U>
|
||||
template <typename V>
|
||||
void P<T, U>::corge (V y)
|
||||
{
|
||||
quux ();
|
||||
for (L x = k.n.j; x < k.o.j; ++x)
|
||||
{
|
||||
++y;
|
||||
D<int> pv;
|
||||
baz (y, *x, pv);
|
||||
}
|
||||
D<int> z;
|
||||
baz (y, k.o.i, z);
|
||||
}
|
||||
struct A {
|
||||
A (int x) : a (x) {}
|
||||
int a;
|
||||
};
|
||||
int a[2]{};
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
P<int> (a, a);
|
||||
return 0;
|
||||
}
|
|
@ -4152,8 +4152,6 @@ get_debug_computation_at (class loop *loop, gimple *at,
|
|||
var = fold_convert (ctype, var);
|
||||
}
|
||||
|
||||
ubase = unshare_expr (ubase);
|
||||
cbase = unshare_expr (cbase);
|
||||
if (stmt_after_increment (loop, cand, at))
|
||||
var = fold_build2 (MINUS_EXPR, TREE_TYPE (var), var,
|
||||
unshare_expr (cstep));
|
||||
|
@ -7648,6 +7646,7 @@ remove_unused_ivs (struct ivopts_data *data, bitmap toremove)
|
|||
if (!best_cand)
|
||||
continue;
|
||||
|
||||
comp = unshare_expr (comp);
|
||||
if (count > 1)
|
||||
{
|
||||
tree vexpr = make_node (DEBUG_EXPR_DECL);
|
||||
|
|
Loading…
Add table
Reference in a new issue