diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-05-02 18:30:13 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-05-02 18:30:13 +0000 | 
| commit | a303c417bbdb53703c2c17398b08486bde78f1f6 (patch) | |
| tree | 98366d6b93d863cefdc53f16c66c0c5ae7fb2261 /lib/CodeGen/StackMaps.cpp | |
| parent | 12f3ca4cdb95b193af905a00e722a4dcb40b3de3 (diff) | |
Notes
Diffstat (limited to 'lib/CodeGen/StackMaps.cpp')
| -rw-r--r-- | lib/CodeGen/StackMaps.cpp | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/lib/CodeGen/StackMaps.cpp b/lib/CodeGen/StackMaps.cpp index 315b059c5ac9..916b6f08c1b9 100644 --- a/lib/CodeGen/StackMaps.cpp +++ b/lib/CodeGen/StackMaps.cpp @@ -41,8 +41,8 @@ using namespace llvm;  #define DEBUG_TYPE "stackmaps"  static cl::opt<int> StackMapVersion( -    "stackmap-version", cl::init(2), -    cl::desc("Specify the stackmap encoding version (default = 2)")); +    "stackmap-version", cl::init(3), +    cl::desc("Specify the stackmap encoding version (default = 3)"));  const char *StackMaps::WSMP = "Stack Maps: "; @@ -85,7 +85,7 @@ unsigned PatchPointOpers::getNextScratchIdx(unsigned StartIdx) const {  }  StackMaps::StackMaps(AsmPrinter &AP) : AP(AP) { -  if (StackMapVersion != 2) +  if (StackMapVersion != 3)      llvm_unreachable("Unsupported stackmap version!");  } @@ -221,8 +221,9 @@ void StackMaps::print(raw_ostream &OS) {          OS << "Constant Index " << Loc.Offset;          break;        } -      OS << "\t[encoding: .byte " << Loc.Type << ", .byte " << Loc.Size -         << ", .short " << Loc.Reg << ", .int " << Loc.Offset << "]\n"; +      OS << "\t[encoding: .byte " << Loc.Type << ", .byte 0" +         << ", .short " << Loc.Size << ", .short " << Loc.Reg << ", .short 0" +         << ", .int " << Loc.Offset << "]\n";        Idx++;      } @@ -521,11 +522,16 @@ void StackMaps::emitCallsiteEntries(MCStreamer &OS) {      for (const auto &Loc : CSLocs) {        OS.EmitIntValue(Loc.Type, 1); -      OS.EmitIntValue(Loc.Size, 1); +      OS.EmitIntValue(0, 1);  // Reserved +      OS.EmitIntValue(Loc.Size, 2);        OS.EmitIntValue(Loc.Reg, 2); +      OS.EmitIntValue(0, 2);  // Reserved        OS.EmitIntValue(Loc.Offset, 4);      } +    // Emit alignment to 8 byte. +    OS.EmitValueToAlignment(8); +      // Num live-out registers and padding to align to 4 byte.      OS.EmitIntValue(0, 2);      OS.EmitIntValue(LiveOuts.size(), 2); | 
