Index: src/IceTargetLoweringX86BaseImpl.h |
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h |
index 0bf03ebf327a6e711dde47bcafe81514bca8d880..745e2b52e46df56d4c6eb6b92cdf296653697195 100644 |
--- a/src/IceTargetLoweringX86BaseImpl.h |
+++ b/src/IceTargetLoweringX86BaseImpl.h |
@@ -6096,6 +6096,15 @@ void TargetX86Base<TraitsType>::lowerUnreachable( |
} |
template <typename TraitsType> |
+void TargetX86Base<TraitsType>::lowerBreakpoint( |
+ const InstBreakpoint * /*Instr*/) { |
+ _int3(); |
+ // Add a fake use of esp to make sure esp adjustments after the breakpoint do |
+ // not get dead-code eliminated. |
+ keepEspLiveAtExit(); |
Jim Stichnoth
2016/04/14 20:03:44
I don't think this should be necessary. Can it be
Eric Holk
2016/04/15 15:24:27
Done.
I cargo-culted it from lowerUnreachable, so
|
+} |
+ |
+template <typename TraitsType> |
void TargetX86Base<TraitsType>::lowerRMW(const InstX86FakeRMW *RMW) { |
// If the beacon variable's live range does not end in this instruction, then |
// it must end in the modified Store instruction that follows. This means |