Index: src/IceInstX8632.cpp |
diff --git a/src/IceInstX8632.cpp b/src/IceInstX8632.cpp |
index 15e024915f5a405f9bd90c39aa8a7a8f681763f7..7070e27cfbda567ca3fbc138e3988edc0ca2a1fb 100644 |
--- a/src/IceInstX8632.cpp |
+++ b/src/IceInstX8632.cpp |
@@ -318,7 +318,14 @@ InstX8632Fstp::InstX8632Fstp(Cfg *Func, Variable *Dest) |
: InstX8632(Func, InstX8632::Fstp, 0, Dest) {} |
InstX8632Pop::InstX8632Pop(Cfg *Func, Variable *Dest) |
- : InstX8632(Func, InstX8632::Pop, 0, Dest) {} |
+ : InstX8632(Func, InstX8632::Pop, 0, Dest) { |
+ // A pop instruction affects the stack pointer and so it should not |
+ // be allowed to be automatically dead-code eliminated. (The |
+ // corresponding push instruction doesn't need this treatment |
+ // because it has no dest variable and therefore won't be dead-code |
+ // eliminated.) This is needed for asm-verbose mode. |
jvoung (off chromium)
2015/04/29 16:41:35
Could this be described more generically (vs "for
Jim Stichnoth
2015/04/29 17:15:27
OK, I added "late-stage liveness analysis" to the
|
+ HasSideEffects = true; |
+} |
InstX8632Push::InstX8632Push(Cfg *Func, Variable *Source) |
: InstX8632(Func, InstX8632::Push, 1, nullptr) { |