* config/i386/winnt.c (i386_pe_mark_dllimport): Make the new RTL
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Apr 2003 15:20:39 +0000 (15:20 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Apr 2003 15:20:39 +0000 (15:20 +0000)
have the same form as the old RTL.

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

gcc/ChangeLog
gcc/config/i386/winnt.c

index ef0ad87..fecac21 100644 (file)
@@ -1,3 +1,8 @@
+2003-04-21  Mark Mitchell  <mark@codesourcery.com>
+
+       * config/i386/winnt.c (i386_pe_mark_dllimport): Make the new RTL
+       have the same form as the old RTL.
+
 2003-04-21  Andreas Jaeger  <aj@suse.de>
 
         * cppcharset.c (_cpp_valid_ucn): Cast field precision to int.
index ee3448d..dc2ac7a 100644 (file)
@@ -274,6 +274,7 @@ i386_pe_mark_dllimport (decl)
   char  *newname;
   tree idp;
   rtx rtlname;
+  rtx new_symbol;
 
   rtlname = XEXP (DECL_RTL (decl), 0);
   if (GET_CODE (rtlname) == SYMBOL_REF)
@@ -335,8 +336,11 @@ i386_pe_mark_dllimport (decl)
      identical.  */
   idp = get_identifier (newname);
 
-  XEXP (DECL_RTL (decl), 0) 
-    = gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
+  new_symbol = gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
+  XEXP (DECL_RTL (decl), 0)
+    = ((GET_CODE (XEXP (DECL_RTL (decl), 0)) == MEM)
+       ? gen_rtx (MEM, Pmode, new_symbol)
+       : new_symbol);
 
   /* Can't treat a pointer to this as a constant address */
   DECL_NON_ADDR_CONST_P (decl) = 1;