diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4ef531ab020f3027ecf50e6507fff4300ccd2281..3f7d96e6fd0422b7a7f1120c54093605e2a1cc07 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-19  Dirk Mueller  <dmueller@suse.de>
+
+	* config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
+	result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
+	duplicate evaluation.
+
 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
 
 	* config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 7ccecafd9eb62eb370b6997bb7868b2d83c2c787..19dabcc630a0b5bb64c6d0e43dfbb30b211d9adf 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -854,6 +854,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
 #define CONDITIONAL_REGISTER_USAGE					\
 do {									\
     int i;								\
+    unsigned int j;							\
     for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)				\
       {									\
 	if (fixed_regs[i] > 1)						\
@@ -862,10 +863,11 @@ do {									\
 	  call_used_regs[i] = (call_used_regs[i]			\
 			       == (TARGET_64BIT ? 3 : 2));		\
       }									\
-    if (PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM)			\
+    j = PIC_OFFSET_TABLE_REGNUM;					\
+    if (j != INVALID_REGNUM)			\
       {									\
-	fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1;			\
-	call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;			\
+	fixed_regs[j] = 1;			\
+	call_used_regs[j] = 1;			\
       }									\
     if (! TARGET_MMX)							\
       {									\