gcc/
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 6 Jan 2008 22:30:32 +0000 (22:30 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 6 Jan 2008 22:30:32 +0000 (22:30 +0000)
2008-01-06  Paolo Carlini  <pcarlini@suse.de>

PR libstdc++/34680
* c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
* doc/cpp.texi ([Common Predefined Macros]): Document.

gcc/testsuite/
2008-01-06  Paolo Carlini  <pcarlini@suse.de>

PR libstdc++/34680
* g++.dg/rtti/predefined-rtti-macro-1.C: New.
* g++.dg/rtti/predefined-rtti-macro-2.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131366 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-cppbuiltin.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-2.C [new file with mode: 0644]

index 4561dba..0277695 100644 (file)
@@ -1,3 +1,9 @@
+2008-01-06  Paolo Carlini  <pcarlini@suse.de>
+
+       PR libstdc++/34680
+       * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
+       * doc/cpp.texi ([Common Predefined Macros]): Document.
+
 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
index e201b05..86c3f9c 100644 (file)
@@ -449,6 +449,8 @@ c_cpp_builtins (cpp_reader *pfile)
        cpp_define (pfile, "__GXX_WEAK__=0");
       if (warn_deprecated)
        cpp_define (pfile, "__DEPRECATED");
+      if (flag_rtti)
+       cpp_define (pfile, "__GXX_RTTI");
       if (cxx_dialect == cxx0x)
         cpp_define (pfile, "__GXX_EXPERIMENTAL_CXX0X__");
     }
index d66912b..0a0db6b 100644 (file)
@@ -1,3 +1,9 @@
+2008-01-06  Paolo Carlini  <pcarlini@suse.de>
+
+       PR libstdc++/34680
+       * g++.dg/rtti/predefined-rtti-macro-1.C: New.
+       * g++.dg/rtti/predefined-rtti-macro-2.C: Likewise.
+
 2008-01-06  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/34545
diff --git a/gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-1.C b/gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-1.C
new file mode 100644 (file)
index 0000000..5c94bc1
--- /dev/null
@@ -0,0 +1,12 @@
+// { dg-do compile }
+
+struct A { virtual ~A() { }; };
+struct B : A { };
+
+void f(B* bp)
+{
+  bp =
+#ifdef __GXX_RTTI
+  dynamic_cast<B*>(static_cast<A*>(0));
+#endif
+}
diff --git a/gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-2.C b/gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-2.C
new file mode 100644 (file)
index 0000000..284f2f6
--- /dev/null
@@ -0,0 +1,12 @@
+// { dg-do compile }
+// { dg-options "-fno-rtti" }
+
+struct B { };
+
+void f(B* bp)
+{
+  bp =
+#ifndef __GXX_RTTI
+  static_cast<B*>(0);
+#endif
+}