+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):
* 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.
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>
+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
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
* 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>
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>
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>
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>
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>
--- /dev/null
+// 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;
+}