diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8423540f8352a677685e60f22aa0501b56c377ef..58798857fa34785581ded1f1806b42bcacfdfdff 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2000-01-11  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>, Richard Henderson  <rth@cygnus.com>
+
+	* resource.c (mark_referenced_resources): Mark a set strict_low_part
+	as used.
+	* config/i386/i386.c (ix86_expand_setcc): Re-enable clear + set
+	strict_low_part when possible.
+
 2000-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 	* alias.c: PROTO -> PARAMS.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index f2d98a47a97710d3b7e3bf63b58813c5b7db33df..c788229ae771106835bb38f87470bf9de2811f5f 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4341,8 +4341,6 @@ ix86_expand_setcc (code, unordered, dest)
   */
 
   type = 0;
-  /* %%% reload problems with in-out.  Revisit.  */
-  type = 1;
 
   if (GET_MODE (dest) == QImode)
     type = 2;
diff --git a/gcc/resource.c b/gcc/resource.c
index e0e54428a03700eb43f37717cfbdd48afc056a78..719bd2090c2aca12d6633aabb5da0da70fac9f1f 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -272,7 +272,9 @@ mark_referenced_resources (x, res, include_delayed_effects)
       mark_referenced_resources (SET_SRC (x), res, 0);
 
       x = SET_DEST (x);
-      if (GET_CODE (x) == SIGN_EXTRACT || GET_CODE (x) == ZERO_EXTRACT)
+      if (GET_CODE (x) == SIGN_EXTRACT
+	  || GET_CODE (x) == ZERO_EXTRACT
+	  || GET_CODE (x) == STRICT_LOW_PART)
 	mark_referenced_resources (x, res, 0);
       else if (GET_CODE (x) == SUBREG)
 	x = SUBREG_REG (x);