diff --git a/i386-asm.c b/i386-asm.c
index 71c451a3..b686665f 100644
--- a/i386-asm.c
+++ b/i386-asm.c
@@ -347,7 +347,7 @@ static void parse_operand(TCCState *s1, Operand *op)
             goto no_skip;
         } else {
         reg_error:
-            tcc_error("unknown register");
+            tcc_error("unknown register %%%s", get_tok_str(tok, &tokc));
         }
         next();
     no_skip: ;
@@ -1487,7 +1487,8 @@ ST_FUNC void asm_clobber(uint8_t *clobber_regs, const char *str)
     TokenSym *ts;
 
     if (!strcmp(str, "memory") ||
-        !strcmp(str, "cc"))
+        !strcmp(str, "cc") ||
+	!strcmp(str, "flags"))
         return;
     ts = tok_alloc(str, strlen(str));
     reg = ts->tok;
diff --git a/tests/tcctest.c b/tests/tcctest.c
index 62189833..3885b549 100644
--- a/tests/tcctest.c
+++ b/tests/tcctest.c
@@ -2566,7 +2566,7 @@ static __inline__ void sigaddset1(unsigned int *set, int _sig)
 
 static __inline__ void sigdelset1(unsigned int *set, int _sig)
 {
-	asm("btrl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
+	asm("btrl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc", "flags");
 }
 
 static __inline__ __const__ unsigned int swab32(unsigned int x)