aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2003-04-12 20:01:29 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2003-04-12 20:01:29 +0000
commit355b81d5b32ba2e74b0da466df75d6a99f25bb16 (patch)
tree1092de168474e077f934e68f0a40d76873451866
parent7ef9fd85efee623d62215c4ab0f97fe6b796af55 (diff)
downloadgcc-355b81d5b32ba2e74b0da466df75d6a99f25bb16.zip
gcc-355b81d5b32ba2e74b0da466df75d6a99f25bb16.tar.gz
gcc-355b81d5b32ba2e74b0da466df75d6a99f25bb16.tar.bz2
re PR c++/7910 ([cygwin] Seg fault when compiling OpenSceneGraph 0.9.1)
PR c++/7910 * config/i386/winnt.c (i386_pe_mark_dllimport): Fix thinko. PR c++/7910 * g++.dg/ext/dllimport1.C: New test. From-SVN: r65519
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/winnt.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ext/dllimport1.C21
4 files changed, 34 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ee65471..0e9f49d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-12 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/7910
+ * config/i386/winnt.c (i386_pe_mark_dllimport): Fix thinko.
+
2003-04-12 Zack Weinberg <zack@codesourcery.com>
* configure.in: Check for wchar.h, mbstowcs, and wcswidth.
diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
index 0751c7f..98e5792 100644
--- a/gcc/config/i386/winnt.c
+++ b/gcc/config/i386/winnt.c
@@ -273,7 +273,7 @@ i386_pe_mark_dllimport (decl)
const char *oldname;
char *newname;
tree idp;
- rtx rtlname, newrtl;
+ rtx rtlname;
rtlname = XEXP (DECL_RTL (decl), 0);
if (GET_CODE (rtlname) == SYMBOL_REF)
@@ -335,10 +335,8 @@ i386_pe_mark_dllimport (decl)
identical. */
idp = get_identifier (newname);
- newrtl = gen_rtx (MEM, Pmode,
- gen_rtx (SYMBOL_REF, Pmode,
- IDENTIFIER_POINTER (idp)));
- XEXP (DECL_RTL (decl), 0) = newrtl;
+ XEXP (DECL_RTL (decl), 0)
+ = gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
/* Can't treat a pointer to this as a constant address */
DECL_NON_ADDR_CONST_P (decl) = 1;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fa8f2b8..c7cae0a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-12 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/7910
+ * g++.dg/ext/dllimport1.C: New test.
+
2003-04-12 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.dg/ultrasp8.c: Fix for 32-bit Sparc.
diff --git a/gcc/testsuite/g++.dg/ext/dllimport1.C b/gcc/testsuite/g++.dg/ext/dllimport1.C
new file mode 100644
index 0000000..a93fb19
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/dllimport1.C
@@ -0,0 +1,21 @@
+// { dg-do compile { target i?86-*-cygwin* } }
+
+class __attribute__((dllimport)) Foo
+{
+ public:
+ virtual void dummy_foo_func(void)
+ {}
+};
+
+class Bar : public Foo
+{
+public:
+ ~Bar();
+ void dummy_bar_func();
+};
+
+Bar::~Bar()
+{}
+
+void Bar::dummy_bar_func()
+{}