summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lisc/isel.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lisc/isel.c b/lisc/isel.c
index ab8e46c..ede7463 100644
--- a/lisc/isel.c
+++ b/lisc/isel.c
@@ -262,15 +262,17 @@ sel(Ins i, ANum *an, Fn *fn)
 	case ONop:
 		break;
 	case OStored:
-		if (rtype(i.arg[0]) == RCon)
-			i.op = OStorel;
 	case OStores:
-		if (rtype(i.arg[0]) == RCon)
-			i.op = OStorew;
 	case OStorel:
 	case OStorew:
 	case OStoreh:
 	case OStoreb:
+		if (rtype(i.arg[0]) == RCon) {
+			if (i.op == OStored)
+				i.op = OStorel;
+			if (i.op == OStores)
+				i.op = OStorew;
+		}
 		seladdr(&i.arg[1], an, fn);
 		goto Emit;
 	case_OLoad: