index c02b4e197e7ae4ca2e6a101ef5154129c98254dd..9e93a573a3d11f631196b351163792912770116f 100644 (file)
namespace llvm {
class AsmPrinter;
namespace llvm {
class AsmPrinter;
+class ByteStreamer;
class TargetRegisterInfo;
/// Base class containing the logic for constructing DWARF expressions
class TargetRegisterInfo;
/// Base class containing the logic for constructing DWARF expressions
const AsmPrinter ≈
// Various convenience accessors that extract things out of AsmPrinter.
const TargetRegisterInfo *getTRI() const;
const AsmPrinter ≈
// Various convenience accessors that extract things out of AsmPrinter.
const TargetRegisterInfo *getTRI() const;
+ unsigned getDwarfVersion() const;
public:
DwarfExpression(const AsmPrinter &AP) : AP(AP) {}
public:
DwarfExpression(const AsmPrinter &AP) : AP(AP) {}
void AddMachineRegPiece(unsigned MachineReg,
unsigned PieceSizeInBits = 0,
unsigned PieceOffsetInBits = 0);
void AddMachineRegPiece(unsigned MachineReg,
unsigned PieceSizeInBits = 0,
unsigned PieceOffsetInBits = 0);
+
+ /// Emit a signed constant.
+ void AddSignedConstant(int Value);
+ /// Emit an unsigned constant.
+ void AddUnsignedConstant(unsigned Value);
+};
+
+
+/// DwarfExpression implementation for .debug_loc entries.
+class DebugLocDwarfExpression : public DwarfExpression {
+ ByteStreamer &BS;
+
+public:
+ DebugLocDwarfExpression(const AsmPrinter &AP, ByteStreamer &BS)
+ : DwarfExpression(AP), BS(BS) {}
+
+ void EmitOp(uint8_t Op, const char *Comment) override;
+ void EmitSigned(int Value) override;
+ void EmitUnsigned(unsigned Value) override;
+ unsigned getFrameRegister() override;
};
}
};
}