diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/MC/MCWin64EH.cpp | 5 | 
2 files changed, 5 insertions, 4 deletions
| diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 6542f42a03b..fb43a4adbda 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -470,7 +470,9 @@ void MCStreamer::EmitWin64EHSetFrame(unsigned Register, unsigned Offset) {      report_fatal_error("Frame register and offset already specified!");    if (Offset & 0x0F)      report_fatal_error("Misaligned frame pointer offset!"); -  MCWin64EHInstruction Inst(Win64EH::UOP_SetFPReg, 0, Register, Offset); +  MCSymbol *Label = getContext().CreateTempSymbol(); +  MCWin64EHInstruction Inst(Win64EH::UOP_SetFPReg, Label, Register, Offset); +  EmitLabel(Label);    CurFrame->LastFrameInst = CurFrame->Instructions.size();    CurFrame->Instructions.push_back(Inst);  } diff --git a/llvm/lib/MC/MCWin64EH.cpp b/llvm/lib/MC/MCWin64EH.cpp index c5b637c9244..8db1fa2a93c 100644 --- a/llvm/lib/MC/MCWin64EH.cpp +++ b/llvm/lib/MC/MCWin64EH.cpp @@ -64,7 +64,7 @@ static void EmitAbsDifference(MCStreamer &streamer, MCSymbol *lhs,  static void EmitUnwindCode(MCStreamer &streamer, MCSymbol *begin,                             MCWin64EHInstruction &inst) { -  uint8_t b1, b2; +  uint8_t b2;    uint16_t w;    b2 = (inst.getOperation() & 0x0F);    switch (inst.getOperation()) { @@ -93,8 +93,7 @@ static void EmitUnwindCode(MCStreamer &streamer, MCSymbol *begin,      streamer.EmitIntValue(b2, 1);      break;    case Win64EH::UOP_SetFPReg: -    b1 = inst.getOffset() & 0xF0; -    streamer.EmitIntValue(b1, 1); +    EmitAbsDifference(streamer, inst.getLabel(), begin);      streamer.EmitIntValue(b2, 1);      break;    case Win64EH::UOP_SaveNonVol: | 

