| Index: src/IceTargetLoweringX8632Traits.h
|
| diff --git a/src/IceTargetLoweringX8632Traits.h b/src/IceTargetLoweringX8632Traits.h
|
| index cd2670207e6a71deb4ca5a6b9cbd9617d25c7ab5..f6ed709523370410949c2f5f7c9b65cfa192115c 100644
|
| --- a/src/IceTargetLoweringX8632Traits.h
|
| +++ b/src/IceTargetLoweringX8632Traits.h
|
| @@ -735,7 +735,8 @@ template <> struct MachineTraits<TargetX8632> {
|
| uint16_t getShift() const { return Shift; }
|
| SegmentRegisters getSegmentRegister() const { return SegmentReg; }
|
| void emitSegmentOverride(Assembler *Asm) const;
|
| - Address toAsmAddress(Assembler *Asm) const;
|
| + Address toAsmAddress(Assembler *Asm,
|
| + const Ice::TargetLowering *Target) const;
|
|
|
| void emit(const Cfg *Func) const override;
|
| using X86Operand::dump;
|
| @@ -749,6 +750,9 @@ template <> struct MachineTraits<TargetX8632> {
|
|
|
| bool getRandomized() const { return Randomized; }
|
|
|
| + void setIgnoreStackAdjust(bool Ignore) { IgnoreStackAdjust = Ignore; }
|
| + bool getIgnoreStackAdjust() const { return IgnoreStackAdjust; }
|
| +
|
| private:
|
| X86OperandMem(Cfg *Func, Type Ty, Variable *Base, Constant *Offset,
|
| Variable *Index, uint16_t Shift, SegmentRegisters SegmentReg);
|
| @@ -762,6 +766,11 @@ template <> struct MachineTraits<TargetX8632> {
|
| /// memory operands are generated in
|
| /// TargetX86Base::randomizeOrPoolImmediate()
|
| bool Randomized;
|
| + /// Memory operations involving the stack pointer need to know when the
|
| + /// stack pointer was moved temporarily. Ignore that adjustment in
|
| + /// cases that should be pinned to the stack pointer, such as outgoing
|
| + /// arguments to calls.
|
| + bool IgnoreStackAdjust = false;
|
| };
|
|
|
| /// VariableSplit is a way to treat an f64 memory location as a pair of i32
|
|
|