Chromium Code Reviews| Index: src/IceTargetLoweringX8632Traits.h |
| diff --git a/src/IceTargetLoweringX8632Traits.h b/src/IceTargetLoweringX8632Traits.h |
| index cd2670207e6a71deb4ca5a6b9cbd9617d25c7ab5..1a25de82ba6f8c5b1e5d00bc1c5e00edd1a19e0e 100644 |
| --- a/src/IceTargetLoweringX8632Traits.h |
| +++ b/src/IceTargetLoweringX8632Traits.h |
| @@ -735,7 +735,7 @@ 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, Ice::TargetLowering *Target) const; |
|
Jim Stichnoth
2015/11/11 17:39:45
Maybe const ... *Target ?
sehr
2015/11/11 22:14:11
Done.
|
| void emit(const Cfg *Func) const override; |
| using X86Operand::dump; |
| @@ -749,6 +749,9 @@ template <> struct MachineTraits<TargetX8632> { |
| bool getRandomized() const { return Randomized; } |
| + void setIgnoreStackAdjust(bool Ignore) { IgnoreStackAdjust = Ignore; } |
|
Jim Stichnoth
2015/11/11 17:39:45
I think you should add this stuff to X8664, even t
sehr
2015/11/11 22:14:10
Done.
|
| + bool getIgnoreStackAdjust() const { return IgnoreStackAdjust; } |
| + |
| private: |
| X86OperandMem(Cfg *Func, Type Ty, Variable *Base, Constant *Offset, |
| Variable *Index, uint16_t Shift, SegmentRegisters SegmentReg); |
| @@ -762,6 +765,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 |