| Index: src/IceTargetLowering.h
|
| diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
|
| index 92eed51197efe6a96f1c9e3251be0e82c60c3875..2ad2685f184f21259829a885b8e5ad7ec6106ae0 100644
|
| --- a/src/IceTargetLowering.h
|
| +++ b/src/IceTargetLowering.h
|
| @@ -192,6 +192,17 @@ public:
|
| llvm::SmallVectorImpl<int32_t> &Permutation,
|
| const llvm::SmallBitVector &ExcludeRegisters) const = 0;
|
|
|
| + // Save/restore any mutable state for the situation where code
|
| + // emission needs multiple passes, such as sandboxing or relaxation.
|
| + // Subclasses may provide their own implementation, but should be
|
| + // sure to also call the parent class's methods.
|
| + virtual void snapshotEmitState() {
|
| + SnapshotStackAdjustment = StackAdjustment;
|
| + }
|
| + virtual void rollbackEmitState() {
|
| + StackAdjustment = SnapshotStackAdjustment;
|
| + }
|
| +
|
| virtual void emitVariable(const Variable *Var) const = 0;
|
|
|
| // Performs target-specific argument lowering.
|
| @@ -239,6 +250,9 @@ protected:
|
| // natural location, as arguments are pushed for a function call.
|
| int32_t StackAdjustment;
|
| LoweringContext Context;
|
| +
|
| +private:
|
| + int32_t SnapshotStackAdjustment;
|
| };
|
|
|
| // TargetDataLowering is used for "lowering" data including initializers
|
|
|