re PR c++/16276 ([3.4 only] G++ generates local references to linkonce sections)
authorH.J. Lu <hongjiu.lu@intel.com>
Thu, 8 Jul 2004 04:58:11 +0000 (04:58 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Thu, 8 Jul 2004 04:58:11 +0000 (21:58 -0700)
2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>

PR c++/16276
* g++.dg/rtti/tinfo1.C: New file.

From-SVN: r84261

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/rtti/tinfo1.C [new file with mode: 0644]

index b5d6d37772afbdee46cb8e56f60695a511383376..244498efc224381208b3fdf58ebced625be686c0 100644 (file)
@@ -1,3 +1,8 @@
+2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR c++/16276
+       * g++.dg/rtti/tinfo1.C: New file.
+
 2004-07-07  Eric Christopher  <echristo@redhat.com>
 
        * gcc.c-torture/compile/20020210-1.c: xfail with optimization.
diff --git a/gcc/testsuite/g++.dg/rtti/tinfo1.C b/gcc/testsuite/g++.dg/rtti/tinfo1.C
new file mode 100644 (file)
index 0000000..f359d16
--- /dev/null
@@ -0,0 +1,40 @@
+// Test if a local definition is in a linkonce/comdat section.
+// { dg-do compile }
+// { dg-final { scan-assembler "_ZTIP9CTemplateIhE:" } }
+// { dg-final { scan-assembler-not ".globl\[   \]+_ZTIP9CTemplateIhE" } }
+// { dg-final { scan-assembler-not ".section\[^\n\r\]*_ZTIP9CTemplateIhE\[^\n\r\]*" } }
+
+
+namespace std
+{
+  class type_info
+  {
+  protected:
+    const char *__name;
+
+  protected:
+    explicit type_info(const char *__n): __name(__n) { }
+
+  public:
+    const char* name() const
+    { return __name; }
+  };
+}
+
+template<class TYPE>
+class CTemplate
+{
+};
+
+class CSecondModule {
+public:
+  CSecondModule();
+
+private:
+  const CTemplate<unsigned char> *m_variable; typedef CTemplate<unsigned char> m_variable_type;
+};
+
+CSecondModule::CSecondModule()
+{
+  typeid(const_cast<m_variable_type *>(m_variable)).name() != 0;
+}