Patchwork i386: Fix gcc.dg/torture/tls/tls-reload-1.c

login
register
mail settings
Submitter Richard Henderson
Date Jan. 3, 2013, 11:29 p.m.
Message ID <1357255799-11385-1-git-send-email-rth@redhat.com>
Download mbox | patch
Permalink /patch/209336/
State New
Headers show

Comments

Richard Henderson - Jan. 3, 2013, 11:29 p.m.
The problem here is that if tmp had the correct mode, as it usually
might, we'd incorrectly discard tmp instead of assigning it to op1.

I see little point in the explicit check vs mode, since convert_to_mode
is going to do exactly that first thing.  This redundant check is something
that should be eliminated elsewhere in the source base too.

Tested on x86_64-linux.


r~


        * config/i386/i386.c (ix86_expand_move): Always assign to op1
        after eliminating TLS symbols.

Patch

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 60f68d4..6dffe14 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1,6 +1,6 @@ 
 /* Subroutines used for code generation on IA-32.
-   Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+   Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -15960,8 +15960,7 @@  ix86_expand_move (enum machine_mode mode, rtx operands[])
 				     op0, 1, OPTAB_DIRECT);
 	  if (tmp == op0)
 	    return;
-	  if (GET_MODE (tmp) != mode)
-	    op1 = convert_to_mode (mode, tmp, 1);
+	  op1 = convert_to_mode (mode, tmp, 1);
 	}
     }