PR c++/92271 - make __is_same alias for __is_same_as.
authorMarek Polacek <polacek@redhat.com>
Thu, 5 Dec 2019 20:06:46 +0000 (20:06 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 5 Dec 2019 20:06:46 +0000 (20:06 +0000)
Richard Smith proposed adding a synonym for __is_same_as, to accomodate the
convention of exposing std::SOME_TRAIT<A, B>::value as __SOME_TRAIT(A, B).

So add that alias, and also adjust the C++ printer.  I didn't bother changing
the RID_ identifier.

* c-common.c: Add __is_same, an alias for __is_same_as.

* cxx-pretty-print.c (pp_cxx_trait_expression) <case CPTK_IS_SAME_AS>:
Print "__is_same".

* g++.dg/ext/is_same.C: New test.

From-SVN: r279018

gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/cp/ChangeLog
gcc/cp/cxx-pretty-print.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/is_same.C [new file with mode: 0644]

index f85da5093d803f180383fc1b650e9d3c595036af..82a62b82749637b0aae6e968060531a5dc44de3d 100644 (file)
@@ -1,3 +1,8 @@
+2019-12-05  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/92271 - make __is_same alias for __is_same_as.
+       * c-common.c: Add __is_same, an alias for __is_same_as.
+
 2019-12-03  Marek Polacek  <polacek@redhat.com>
 
        PR c++/91363 - P0960R3: Parenthesized initialization of aggregates.
index 2f389d2895aff1922ae634173381795dcbc3b026..8292d18621b64fd685783ac994c27ec2ca488c78 100644 (file)
@@ -418,6 +418,7 @@ const struct c_common_resword c_common_reswords[] =
   { "__is_literal_type", RID_IS_LITERAL_TYPE, D_CXXONLY },
   { "__is_pod",                RID_IS_POD,     D_CXXONLY },
   { "__is_polymorphic",        RID_IS_POLYMORPHIC, D_CXXONLY },
+  { "__is_same",     RID_IS_SAME_AS, D_CXXONLY },
   { "__is_same_as",     RID_IS_SAME_AS, D_CXXONLY },
   { "__is_standard_layout", RID_IS_STD_LAYOUT, D_CXXONLY },
   { "__is_trivial",     RID_IS_TRIVIAL, D_CXXONLY },
index b9b8949644ad9b089477b7b8fa40b8b909529d66..4e88ed828f6476701da0bf3c52432c7101bb7765 100644 (file)
@@ -1,3 +1,9 @@
+2019-12-05  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/92271 - make __is_same alias for __is_same_as.
+       * cxx-pretty-print.c (pp_cxx_trait_expression) <case CPTK_IS_SAME_AS>:
+       Print "__is_same".
+
 2019-12-05  David Edelsohn  <dje.gcc@gmail.com>
 
        * cp-gimplify.c: Include memmodel.h.
index 909b2a4ef1d4110157a78380185077ecdfbbfe7e..62805446ba9e8c2a0ded51f9dcc9176e26660e6f 100644 (file)
@@ -2661,7 +2661,7 @@ pp_cxx_trait_expression (cxx_pretty_printer *pp, tree t)
       pp_cxx_ws_string (pp, "__is_polymorphic");
       break;
     case CPTK_IS_SAME_AS:
-      pp_cxx_ws_string (pp, "__is_same_as");
+      pp_cxx_ws_string (pp, "__is_same");
       break;
     case CPTK_IS_STD_LAYOUT:
       pp_cxx_ws_string (pp, "__is_std_layout");
index 34e5783cedd4f090ef32f72e51150d111c7865c1..e1692fae10db9a2808dbe7144f1ef2042031b3e3 100644 (file)
@@ -1,3 +1,8 @@
+2019-12-05  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/92271 - make __is_same alias for __is_same_as.
+       * g++.dg/ext/is_same.C: New test.
+
 2019-12-05  Tobias Burnus  <tobias@codesourcery.com>
 
        * testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: Add
diff --git a/gcc/testsuite/g++.dg/ext/is_same.C b/gcc/testsuite/g++.dg/ext/is_same.C
new file mode 100644 (file)
index 0000000..5e9079c
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/92271 - make __is_same alias for __is_same_as.
+// { dg-do compile { target c++11 } }
+
+static_assert(__is_same(int, int) == __is_same_as(int, int), "");
+static_assert(__is_same(unsigned int, int) == __is_same_as(unsigned int, int), "");