diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-04-12 20:01:29 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-04-12 20:01:29 +0000 |
commit | 355b81d5b32ba2e74b0da466df75d6a99f25bb16 (patch) | |
tree | 1092de168474e077f934e68f0a40d76873451866 | |
parent | 7ef9fd85efee623d62215c4ab0f97fe6b796af55 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/winnt.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/dllimport1.C | 21 |
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() +{} |