aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-10-05 12:20:18 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-10-05 12:20:18 +0000
commitb691d4b02ae11b0326092e0e677e561b35af38d7 (patch)
tree17c278d293f86ff9f8d6e0d419bd8fd8e71859b1 /gcc
parent1c0f4777764babd324a484efbf297b6d345dc2e0 (diff)
downloadgcc-b691d4b02ae11b0326092e0e677e561b35af38d7.zip
gcc-b691d4b02ae11b0326092e0e677e561b35af38d7.tar.gz
gcc-b691d4b02ae11b0326092e0e677e561b35af38d7.tar.bz2
tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
2007-10-05 Richard Guenther <rguenther@suse.de> * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF. * g++.dg/tree-ssa/obj-type-ref.C: New testcase. From-SVN: r129033
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/obj-type-ref.C19
-rw-r--r--gcc/tree-cfg.c4
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fba43b2..70c369a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2007-10-05 Richard Guenther <rguenther@suse.de>
+
+ * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
+
2007-10-05 Richard Sandiford <rsandifo@nildram.co.uk>
PR target/33635
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2252f67..ca33da8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2007-10-05 Richard Guenther <rguenther@suse.de>
+
+ * g++.dg/tree-ssa/obj-type-ref.C: New testcase.
+
2007-10-05 Richard Sandiford <rsandifo@nildram.co.uk>
PR target/33635
diff --git a/gcc/testsuite/g++.dg/tree-ssa/obj-type-ref.C b/gcc/testsuite/g++.dg/tree-ssa/obj-type-ref.C
new file mode 100644
index 0000000..9854d32
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/obj-type-ref.C
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+
+/* This used to fail with type-checking enabled because we didn't
+ expect OBJ_TYPE_REF expressions. */
+
+class QObject {};
+class Pile : public QObject {
+public:
+ virtual void setVisible(void);
+};
+class Spider {
+ void dealRow();
+ Pile *redeals[5];
+ int m_redeal;
+};
+void Spider::dealRow()
+{
+ redeals[m_redeal++]->setVisible();
+}
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index ad31924..7b21ddc 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -3850,6 +3850,10 @@ verify_gimple_expr (tree expr)
didn't see a function declaration before the call. */
return false;
+ case OBJ_TYPE_REF:
+ /* FIXME. */
+ return false;
+
default:;
}