summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2010-01-04 17:53:29 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2010-01-04 17:53:29 +0000
commit0278c8d834b7d73374478e6ac3f2dbef85290fa3 (patch)
tree87c14a59fac6122a426a6596a458cf6c1bd1ba74
parent344cd9b23c094f9d8f88f7931703c1800868446c (diff)
downloadppe42-gcc-0278c8d834b7d73374478e6ac3f2dbef85290fa3.tar.gz
ppe42-gcc-0278c8d834b7d73374478e6ac3f2dbef85290fa3.zip
PR c++/42567
* semantics.c (describable_type): Remove decltype comment and semantics. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155627 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/semantics.c9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto17.C10
4 files changed, 24 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index af2d0c6d653..77dd1df6954 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2010-01-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/42567
+ * semantics.c (describable_type): Remove decltype comment and
+ semantics.
+
Copyright (C) 2010 Free Software Foundation, Inc.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 547e89934c1..b2f9fd31f56 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -4690,10 +4690,8 @@ finish_static_assert (tree condition, tree message, location_t location,
}
}
-/* Returns decltype((EXPR)) for cases where we can drop the decltype and
- just return the type even though EXPR is a type-dependent expression.
- The ABI specifies which cases this applies to, which is a subset of the
- possible cases. */
+/* Returns the type of EXPR for cases where we can determine it even though
+ EXPR is a type-dependent expression. */
tree
describable_type (tree expr)
@@ -4717,8 +4715,7 @@ describable_type (tree expr)
case PARM_DECL:
case RESULT_DECL:
case FUNCTION_DECL:
- /* Named rvalue reference becomes lvalue. */
- type = build_reference_type (non_reference (TREE_TYPE (expr)));
+ return TREE_TYPE (expr);
break;
case NEW_EXPR:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 30b80afd82e..8d559e91c3b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/42567
+ * g++.dg/cpp0x/auto17.C: New.
+
2010-01-04 Rafael Avila de Espindola <espindola@google.com>
* gcc.dg/lto/20100104_0.c: New.
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto17.C b/gcc/testsuite/g++.dg/cpp0x/auto17.C
new file mode 100644
index 00000000000..03608d33ac6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto17.C
@@ -0,0 +1,10 @@
+// PR c++/42567
+// { dg-options "-std=c++0x" }
+
+template<typename B>
+struct A {
+ template<typename C>
+ void fn(C c) {
+ auto& key = *c;
+ }
+};
OpenPOWER on IntegriCloud