rs6000: Small improvement to the C++17 ABI fix [PR94707]
authorJakub Jelinek <jakub@redhat.com>
Thu, 23 Apr 2020 12:43:18 +0000 (14:43 +0200)
committerJakub Jelinek <jakub@redhat.com>
Thu, 23 Apr 2020 12:43:18 +0000 (14:43 +0200)
Anyway, based on IRC discussion with Richard Sandiford on IRC, we should
probably test type uids instead of type pointers because type uids aren't
reused, but type pointers in a very bad luck case could be, and having the
static var at filescope and GTY((deletable)) is an overkill (and with costs
during GC time).

2020-04-23  Jakub Jelinek  <jakub@redhat.com>

PR target/94707
* config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
Use TYPE_UID (TYPE_MAIN_VARIANT (type)) instead of type to check
if the same type has been diagnosed most recently already.

gcc/ChangeLog
gcc/config/rs6000/rs6000-call.c

index 5f299e463db889825c5e9edd854df0b1b027f42d..69f07c4f663a8137778a50df6733757ac9a9d32c 100644 (file)
@@ -1,3 +1,10 @@
+2020-04-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/94707
+       * config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
+       Use TYPE_UID (TYPE_MAIN_VARIANT (type)) instead of type to check
+       if the same type has been diagnosed most recently already.
+
 2020-04-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
 
        * config/arm/arm_mve.h (__arm_vbicq_n_u16): Modify function parameter's
index a9ae7ab70ca3235651aaeaf8631f2ebdf832b490..d4875ddeeb5c86d70fd3ba208633d796e69455ee 100644 (file)
@@ -5739,14 +5739,15 @@ rs6000_discover_homogeneous_aggregate (machine_mode mode, const_tree type,
                *n_elts = field_count;
              if (cxx17_empty_base_seen && warn_psabi)
                {
-                 static const_tree last_reported_type;
-                 if (type != last_reported_type)
+                 static unsigned last_reported_type_uid;
+                 unsigned uid = TYPE_UID (TYPE_MAIN_VARIANT (type));
+                 if (uid != last_reported_type_uid)
                    {
                      inform (input_location,
                              "parameter passing for argument of type %qT "
                              "when C++17 is enabled changed to match C++14 "
                              "in GCC 10.1", type);
-                     last_reported_type = type;
+                     last_reported_type_uid = uid;
                    }
                }
              return true;