| Index: src/IceTargetLoweringX8664Traits.h
|
| diff --git a/src/IceTargetLoweringX8664Traits.h b/src/IceTargetLoweringX8664Traits.h
|
| index f6c834ade254b269e5e73d9e13f9d86d239c6125..98ec050e70fa94fa7261ea5ef8714ff1cf85e8ba 100644
|
| --- a/src/IceTargetLoweringX8664Traits.h
|
| +++ b/src/IceTargetLoweringX8664Traits.h
|
| @@ -717,7 +717,8 @@ template <> struct MachineTraits<TargetX8664> {
|
| uint16_t getShift() const { return Shift; }
|
| SegmentRegisters getSegmentRegister() const { return DefaultSegment; }
|
| void emitSegmentOverride(Assembler *) 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;
|
| @@ -731,6 +732,9 @@ template <> struct MachineTraits<TargetX8664> {
|
|
|
| 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);
|
| @@ -743,6 +747,11 @@ template <> struct MachineTraits<TargetX8664> {
|
| /// memory operands are generated in
|
| /// TargetX86Base::randomizeOrPoolImmediate()
|
| bool Randomized = false;
|
| + /// 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
|
|
|