diff --git a/llvm/include/llvm/MC/MCParser/MCAsmParser.h b/llvm/include/llvm/MC/MCParser/MCAsmParser.h --- a/llvm/include/llvm/MC/MCParser/MCAsmParser.h +++ b/llvm/include/llvm/MC/MCParser/MCAsmParser.h @@ -321,6 +321,7 @@ /// on error. /// \return - False on success. virtual bool parseAbsoluteExpression(int64_t &Res) = 0; + virtual bool parseAbsoluteExpression(uint64_t &Res) = 0; /// Ensure that we have a valid section set in the streamer. Otherwise, /// report an error and switch to .text. diff --git a/llvm/include/llvm/MC/MCStreamer.h b/llvm/include/llvm/MC/MCStreamer.h --- a/llvm/include/llvm/MC/MCStreamer.h +++ b/llvm/include/llvm/MC/MCStreamer.h @@ -976,24 +976,24 @@ virtual void emitCFISections(bool EH, bool Debug); void emitCFIStartProc(bool IsSimple, SMLoc Loc = SMLoc()); void emitCFIEndProc(); - virtual void emitCFIDefCfa(int64_t Register, int64_t Offset); + virtual void emitCFIDefCfa(uint64_t Register, int64_t Offset); virtual void emitCFIDefCfaOffset(int64_t Offset); - virtual void emitCFIDefCfaRegister(int64_t Register); - virtual void emitCFIOffset(int64_t Register, int64_t Offset); + virtual void emitCFIDefCfaRegister(uint64_t Register); + virtual void emitCFIOffset(uint64_t Register, int64_t Offset); virtual void emitCFIPersonality(const MCSymbol *Sym, unsigned Encoding); virtual void emitCFILsda(const MCSymbol *Sym, unsigned Encoding); virtual void emitCFIRememberState(); virtual void emitCFIRestoreState(); - virtual void emitCFISameValue(int64_t Register); - virtual void emitCFIRestore(int64_t Register); - virtual void emitCFIRelOffset(int64_t Register, int64_t Offset); + virtual void emitCFISameValue(uint64_t Register); + virtual void emitCFIRestore(uint64_t Register); + virtual void emitCFIRelOffset(uint64_t Register, int64_t Offset); virtual void emitCFIAdjustCfaOffset(int64_t Adjustment); virtual void emitCFIEscape(StringRef Values); - virtual void emitCFIReturnColumn(int64_t Register); + virtual void emitCFIReturnColumn(uint64_t Register); virtual void emitCFIGnuArgsSize(int64_t Size); virtual void emitCFISignalFrame(); - virtual void emitCFIUndefined(int64_t Register); - virtual void emitCFIRegister(int64_t Register1, int64_t Register2); + virtual void emitCFIUndefined(uint64_t Register); + virtual void emitCFIRegister(uint64_t Register1, uint64_t Register2); virtual void emitCFIWindowSave(); virtual void emitCFINegateRAState(); diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp --- a/llvm/lib/MC/MCAsmStreamer.cpp +++ b/llvm/lib/MC/MCAsmStreamer.cpp @@ -59,7 +59,7 @@ unsigned ShowInst : 1; unsigned UseDwarfDirectory : 1; - void EmitRegisterName(int64_t Register); + void emitRegisterName(uint64_t Register); void PrintQuotedString(StringRef Data, raw_ostream &OS) const; void printDwarfFileDirective(unsigned FileNo, StringRef Directory, StringRef Filename, @@ -312,26 +312,26 @@ void emitIdent(StringRef IdentString) override; void emitCFIBKeyFrame() override; void emitCFISections(bool EH, bool Debug) override; - void emitCFIDefCfa(int64_t Register, int64_t Offset) override; + void emitCFIDefCfa(uint64_t Register, int64_t Offset) override; void emitCFIDefCfaOffset(int64_t Offset) override; - void emitCFIDefCfaRegister(int64_t Register) override; - void emitCFIOffset(int64_t Register, int64_t Offset) override; + void emitCFIDefCfaRegister(uint64_t Register) override; + void emitCFIOffset(uint64_t Register, int64_t Offset) override; void emitCFIPersonality(const MCSymbol *Sym, unsigned Encoding) override; void emitCFILsda(const MCSymbol *Sym, unsigned Encoding) override; void emitCFIRememberState() override; void emitCFIRestoreState() override; - void emitCFIRestore(int64_t Register) override; - void emitCFISameValue(int64_t Register) override; - void emitCFIRelOffset(int64_t Register, int64_t Offset) override; + void emitCFIRestore(uint64_t Register) override; + void emitCFISameValue(uint64_t Register) override; + void emitCFIRelOffset(uint64_t Register, int64_t Offset) override; void emitCFIAdjustCfaOffset(int64_t Adjustment) override; void emitCFIEscape(StringRef Values) override; void emitCFIGnuArgsSize(int64_t Size) override; void emitCFISignalFrame() override; - void emitCFIUndefined(int64_t Register) override; - void emitCFIRegister(int64_t Register1, int64_t Register2) override; + void emitCFIUndefined(uint64_t Register) override; + void emitCFIRegister(uint64_t Register1, uint64_t Register2) override; void emitCFIWindowSave() override; void emitCFINegateRAState() override; - void emitCFIReturnColumn(int64_t Register) override; + void emitCFIReturnColumn(uint64_t Register) override; void EmitWinCFIStartProc(const MCSymbol *Symbol, SMLoc Loc) override; void EmitWinCFIEndProc(SMLoc Loc) override; @@ -1757,7 +1757,7 @@ EmitEOL(); } -void MCAsmStreamer::EmitRegisterName(int64_t Register) { +void MCAsmStreamer::emitRegisterName(uint64_t Register) { if (!MAI->useDwarfRegNumForCFI()) { // User .cfi_* directives can use arbitrary DWARF register numbers, not // just ones that map to LLVM register numbers and have known names. @@ -1771,10 +1771,10 @@ OS << Register; } -void MCAsmStreamer::emitCFIDefCfa(int64_t Register, int64_t Offset) { +void MCAsmStreamer::emitCFIDefCfa(uint64_t Register, int64_t Offset) { MCStreamer::emitCFIDefCfa(Register, Offset); OS << "\t.cfi_def_cfa "; - EmitRegisterName(Register); + emitRegisterName(Register); OS << ", " << Offset; EmitEOL(); } @@ -1811,17 +1811,17 @@ EmitEOL(); } -void MCAsmStreamer::emitCFIDefCfaRegister(int64_t Register) { +void MCAsmStreamer::emitCFIDefCfaRegister(uint64_t Register) { MCStreamer::emitCFIDefCfaRegister(Register); OS << "\t.cfi_def_cfa_register "; - EmitRegisterName(Register); + emitRegisterName(Register); EmitEOL(); } -void MCAsmStreamer::emitCFIOffset(int64_t Register, int64_t Offset) { +void MCAsmStreamer::emitCFIOffset(uint64_t Register, int64_t Offset) { this->MCStreamer::emitCFIOffset(Register, Offset); OS << "\t.cfi_offset "; - EmitRegisterName(Register); + emitRegisterName(Register); OS << ", " << Offset; EmitEOL(); } @@ -1853,24 +1853,24 @@ EmitEOL(); } -void MCAsmStreamer::emitCFIRestore(int64_t Register) { +void MCAsmStreamer::emitCFIRestore(uint64_t Register) { MCStreamer::emitCFIRestore(Register); OS << "\t.cfi_restore "; - EmitRegisterName(Register); + emitRegisterName(Register); EmitEOL(); } -void MCAsmStreamer::emitCFISameValue(int64_t Register) { +void MCAsmStreamer::emitCFISameValue(uint64_t Register) { MCStreamer::emitCFISameValue(Register); OS << "\t.cfi_same_value "; - EmitRegisterName(Register); + emitRegisterName(Register); EmitEOL(); } -void MCAsmStreamer::emitCFIRelOffset(int64_t Register, int64_t Offset) { +void MCAsmStreamer::emitCFIRelOffset(uint64_t Register, int64_t Offset) { MCStreamer::emitCFIRelOffset(Register, Offset); OS << "\t.cfi_rel_offset "; - EmitRegisterName(Register); + emitRegisterName(Register); OS << ", " << Offset; EmitEOL(); } @@ -1887,19 +1887,19 @@ EmitEOL(); } -void MCAsmStreamer::emitCFIUndefined(int64_t Register) { +void MCAsmStreamer::emitCFIUndefined(uint64_t Register) { MCStreamer::emitCFIUndefined(Register); OS << "\t.cfi_undefined "; - EmitRegisterName(Register); + emitRegisterName(Register); EmitEOL(); } -void MCAsmStreamer::emitCFIRegister(int64_t Register1, int64_t Register2) { +void MCAsmStreamer::emitCFIRegister(uint64_t Register1, uint64_t Register2) { MCStreamer::emitCFIRegister(Register1, Register2); OS << "\t.cfi_register "; - EmitRegisterName(Register1); + emitRegisterName(Register1); OS << ", "; - EmitRegisterName(Register2); + emitRegisterName(Register2); EmitEOL(); } @@ -1915,10 +1915,10 @@ EmitEOL(); } -void MCAsmStreamer::emitCFIReturnColumn(int64_t Register) { +void MCAsmStreamer::emitCFIReturnColumn(uint64_t Register) { MCStreamer::emitCFIReturnColumn(Register); OS << "\t.cfi_return_column "; - EmitRegisterName(Register); + emitRegisterName(Register); EmitEOL(); } diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -258,6 +258,7 @@ bool parseParenExprOfDepth(unsigned ParenDepth, const MCExpr *&Res, SMLoc &EndLoc) override; bool parseAbsoluteExpression(int64_t &Res) override; + bool parseAbsoluteExpression(uint64_t &Res) override; /// Parse a floating point expression using the float \p Semantics /// and set \p Res to the value. @@ -357,7 +358,7 @@ bool parseParenExpr(const MCExpr *&Res, SMLoc &EndLoc); bool parseBracketExpr(const MCExpr *&Res, SMLoc &EndLoc); - bool parseRegisterOrRegisterNumber(int64_t &Register, SMLoc DirectiveLoc); + bool parseRegisterOrRegisterNumber(uint64_t &Register, SMLoc DirectiveLoc); bool parseCVFunctionId(int64_t &FunctionId, StringRef DirectiveName); bool parseCVFileId(int64_t &FileId, StringRef DirectiveName); @@ -1518,6 +1519,24 @@ return false; } +bool AsmParser::parseAbsoluteExpression(uint64_t &Res) { + const MCExpr *Expr; + + SMLoc StartLoc = Lexer.getLoc(); + if (parseExpression(Expr)) + return true; + + // FIXME: overload evaluateAsAbsolute() for uint64_t type? + int64_t Value; + if (!Expr->evaluateAsAbsolute(Value, getStreamer().getAssemblerPtr())) + return Error(StartLoc, "expected absolute expression"); + + assert(Value >= 0); + Res = static_cast(Value); + + return false; +} + static unsigned getDarwinBinOpPrecedence(AsmToken::TokenKind K, MCBinaryExpr::Opcode &Kind, bool ShouldUseLogicalShr) { @@ -4134,7 +4153,7 @@ } /// parse register name or number. -bool AsmParser::parseRegisterOrRegisterNumber(int64_t &Register, +bool AsmParser::parseRegisterOrRegisterNumber(uint64_t &Register, SMLoc DirectiveLoc) { unsigned RegNo; @@ -4151,7 +4170,8 @@ /// parseDirectiveCFIDefCfa /// ::= .cfi_def_cfa register, offset bool AsmParser::parseDirectiveCFIDefCfa(SMLoc DirectiveLoc) { - int64_t Register = 0, Offset = 0; + uint64_t Register = 0; + int64_t Offset = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseComma() || parseAbsoluteExpression(Offset) || parseEOL()) return true; @@ -4174,7 +4194,7 @@ /// parseDirectiveCFIRegister /// ::= .cfi_register register, register bool AsmParser::parseDirectiveCFIRegister(SMLoc DirectiveLoc) { - int64_t Register1 = 0, Register2 = 0; + uint64_t Register1 = 0, Register2 = 0; if (parseRegisterOrRegisterNumber(Register1, DirectiveLoc) || parseComma() || parseRegisterOrRegisterNumber(Register2, DirectiveLoc) || parseEOL()) return true; @@ -4206,7 +4226,7 @@ /// parseDirectiveCFIDefCfaRegister /// ::= .cfi_def_cfa_register register bool AsmParser::parseDirectiveCFIDefCfaRegister(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL()) return true; @@ -4217,7 +4237,7 @@ /// parseDirectiveCFIOffset /// ::= .cfi_offset register, offset bool AsmParser::parseDirectiveCFIOffset(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; int64_t Offset = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseComma() || @@ -4231,7 +4251,8 @@ /// parseDirectiveCFIRelOffset /// ::= .cfi_rel_offset register, offset bool AsmParser::parseDirectiveCFIRelOffset(SMLoc DirectiveLoc) { - int64_t Register = 0, Offset = 0; + uint64_t Register = 0; + int64_t Offset = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseComma() || parseAbsoluteExpression(Offset) || parseEOL()) @@ -4311,7 +4332,7 @@ /// parseDirectiveCFISameValue /// ::= .cfi_same_value register bool AsmParser::parseDirectiveCFISameValue(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL()) return true; @@ -4323,7 +4344,7 @@ /// parseDirectiveCFIRestore /// ::= .cfi_restore register bool AsmParser::parseDirectiveCFIRestore(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL()) return true; @@ -4357,7 +4378,7 @@ /// parseDirectiveCFIReturnColumn /// ::= .cfi_return_column register bool AsmParser::parseDirectiveCFIReturnColumn(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL()) return true; getStreamer().emitCFIReturnColumn(Register); @@ -4377,7 +4398,7 @@ /// parseDirectiveCFIUndefined /// ::= .cfi_undefined register bool AsmParser::parseDirectiveCFIUndefined(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL()) return true; diff --git a/llvm/lib/MC/MCParser/MasmParser.cpp b/llvm/lib/MC/MCParser/MasmParser.cpp --- a/llvm/lib/MC/MCParser/MasmParser.cpp +++ b/llvm/lib/MC/MCParser/MasmParser.cpp @@ -525,6 +525,7 @@ bool parseParenExprOfDepth(unsigned ParenDepth, const MCExpr *&Res, SMLoc &EndLoc) override; bool parseAbsoluteExpression(int64_t &Res) override; + bool parseAbsoluteExpression(uint64_t &Res) override; /// Parse a floating point expression using the float \p Semantics /// and set \p Res to the value. @@ -632,7 +633,7 @@ bool parseParenExpr(const MCExpr *&Res, SMLoc &EndLoc); bool parseBracketExpr(const MCExpr *&Res, SMLoc &EndLoc); - bool parseRegisterOrRegisterNumber(int64_t &Register, SMLoc DirectiveLoc); + bool parseRegisterOrRegisterNumber(uint64_t &Register, SMLoc DirectiveLoc); bool parseCVFunctionId(int64_t &FunctionId, StringRef DirectiveName); bool parseCVFileId(int64_t &FileId, StringRef DirectiveName); @@ -1828,6 +1829,24 @@ return false; } +bool MasmParser::parseAbsoluteExpression(uint64_t &Res) { + const MCExpr *Expr; + + SMLoc StartLoc = Lexer.getLoc(); + if (parseExpression(Expr)) + return true; + + // FIXME: overload evaluateAsAbsolute() for uint64_t type? + int64_t Value; + if (!Expr->evaluateAsAbsolute(Value, getStreamer().getAssemblerPtr())) + return Error(StartLoc, "expected absolute expression"); + + assert(Value >= 0); + Res = static_cast(Value); + + return false; +} + static unsigned getGNUBinOpPrecedence(AsmToken::TokenKind K, MCBinaryExpr::Opcode &Kind, bool ShouldUseLogicalShr, @@ -5244,7 +5263,7 @@ } /// parse register name or number. -bool MasmParser::parseRegisterOrRegisterNumber(int64_t &Register, +bool MasmParser::parseRegisterOrRegisterNumber(uint64_t &Register, SMLoc DirectiveLoc) { unsigned RegNo; @@ -5261,7 +5280,8 @@ /// parseDirectiveCFIDefCfa /// ::= .cfi_def_cfa register, offset bool MasmParser::parseDirectiveCFIDefCfa(SMLoc DirectiveLoc) { - int64_t Register = 0, Offset = 0; + uint64_t Register = 0; + int64_t Offset = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseToken(AsmToken::Comma, "unexpected token in directive") || parseAbsoluteExpression(Offset)) @@ -5285,7 +5305,7 @@ /// parseDirectiveCFIRegister /// ::= .cfi_register register, register bool MasmParser::parseDirectiveCFIRegister(SMLoc DirectiveLoc) { - int64_t Register1 = 0, Register2 = 0; + uint64_t Register1 = 0, Register2 = 0; if (parseRegisterOrRegisterNumber(Register1, DirectiveLoc) || parseToken(AsmToken::Comma, "unexpected token in directive") || parseRegisterOrRegisterNumber(Register2, DirectiveLoc)) @@ -5316,7 +5336,7 @@ /// parseDirectiveCFIDefCfaRegister /// ::= .cfi_def_cfa_register register bool MasmParser::parseDirectiveCFIDefCfaRegister(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc)) return true; @@ -5327,7 +5347,7 @@ /// parseDirectiveCFIOffset /// ::= .cfi_offset register, offset bool MasmParser::parseDirectiveCFIOffset(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; int64_t Offset = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || @@ -5342,7 +5362,8 @@ /// parseDirectiveCFIRelOffset /// ::= .cfi_rel_offset register, offset bool MasmParser::parseDirectiveCFIRelOffset(SMLoc DirectiveLoc) { - int64_t Register = 0, Offset = 0; + uint64_t Register = 0; + int64_t Offset = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseToken(AsmToken::Comma, "unexpected token in directive") || @@ -5418,7 +5439,7 @@ /// parseDirectiveCFISameValue /// ::= .cfi_same_value register bool MasmParser::parseDirectiveCFISameValue(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc)) return true; @@ -5430,7 +5451,7 @@ /// parseDirectiveCFIRestore /// ::= .cfi_restore register bool MasmParser::parseDirectiveCFIRestore(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc)) return true; @@ -5464,7 +5485,7 @@ /// parseDirectiveCFIReturnColumn /// ::= .cfi_return_column register bool MasmParser::parseDirectiveCFIReturnColumn(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc)) return true; getStreamer().emitCFIReturnColumn(Register); @@ -5485,7 +5506,7 @@ /// parseDirectiveCFIUndefined /// ::= .cfi_undefined register bool MasmParser::parseDirectiveCFIUndefined(SMLoc DirectiveLoc) { - int64_t Register = 0; + uint64_t Register = 0; if (parseRegisterOrRegisterNumber(Register, DirectiveLoc)) return true; diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -475,7 +475,7 @@ return (MCSymbol *)1; } -void MCStreamer::emitCFIDefCfa(int64_t Register, int64_t Offset) { +void MCStreamer::emitCFIDefCfa(uint64_t Register, int64_t Offset) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::cfiDefCfa(Label, Register, Offset); @@ -483,7 +483,7 @@ if (!CurFrame) return; CurFrame->Instructions.push_back(Instruction); - CurFrame->CurrentCfaRegister = static_cast(Register); + CurFrame->CurrentCfaRegister = Register; } void MCStreamer::emitCFIDefCfaOffset(int64_t Offset) { @@ -506,7 +506,7 @@ CurFrame->Instructions.push_back(Instruction); } -void MCStreamer::emitCFIDefCfaRegister(int64_t Register) { +void MCStreamer::emitCFIDefCfaRegister(uint64_t Register) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::createDefCfaRegister(Label, Register); @@ -514,10 +514,10 @@ if (!CurFrame) return; CurFrame->Instructions.push_back(Instruction); - CurFrame->CurrentCfaRegister = static_cast(Register); + CurFrame->CurrentCfaRegister = Register; } -void MCStreamer::emitCFIOffset(int64_t Register, int64_t Offset) { +void MCStreamer::emitCFIOffset(uint64_t Register, int64_t Offset) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::createOffset(Label, Register, Offset); @@ -527,7 +527,7 @@ CurFrame->Instructions.push_back(Instruction); } -void MCStreamer::emitCFIRelOffset(int64_t Register, int64_t Offset) { +void MCStreamer::emitCFIRelOffset(uint64_t Register, int64_t Offset) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::createRelOffset(Label, Register, Offset); @@ -573,7 +573,7 @@ CurFrame->Instructions.push_back(Instruction); } -void MCStreamer::emitCFISameValue(int64_t Register) { +void MCStreamer::emitCFISameValue(uint64_t Register) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::createSameValue(Label, Register); @@ -583,7 +583,7 @@ CurFrame->Instructions.push_back(Instruction); } -void MCStreamer::emitCFIRestore(int64_t Register) { +void MCStreamer::emitCFIRestore(uint64_t Register) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::createRestore(Label, Register); @@ -619,7 +619,7 @@ CurFrame->IsSignalFrame = true; } -void MCStreamer::emitCFIUndefined(int64_t Register) { +void MCStreamer::emitCFIUndefined(uint64_t Register) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::createUndefined(Label, Register); @@ -629,7 +629,7 @@ CurFrame->Instructions.push_back(Instruction); } -void MCStreamer::emitCFIRegister(int64_t Register1, int64_t Register2) { +void MCStreamer::emitCFIRegister(uint64_t Register1, uint64_t Register2) { MCSymbol *Label = emitCFILabel(); MCCFIInstruction Instruction = MCCFIInstruction::createRegister(Label, Register1, Register2); @@ -658,7 +658,7 @@ CurFrame->Instructions.push_back(Instruction); } -void MCStreamer::emitCFIReturnColumn(int64_t Register) { +void MCStreamer::emitCFIReturnColumn(uint64_t Register) { MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo(); if (!CurFrame) return;