mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-27 15:29:51 +00:00
MC: Truncate values when printing, to keep 'as' happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74201 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1e249e3705
commit
304f6a48b1
@ -61,7 +61,7 @@ namespace {
|
||||
}
|
||||
|
||||
/// Allow printing values directly to a raw_ostream.
|
||||
inline raw_ostream &operator<<(raw_ostream &os, const MCValue &Value) {
|
||||
static inline raw_ostream &operator<<(raw_ostream &os, const MCValue &Value) {
|
||||
if (Value.getSymA()) {
|
||||
os << Value.getSymA()->getName();
|
||||
if (Value.getSymB())
|
||||
@ -76,6 +76,16 @@ inline raw_ostream &operator<<(raw_ostream &os, const MCValue &Value) {
|
||||
return os;
|
||||
}
|
||||
|
||||
static inline int64_t truncateToSize(int64_t Value, unsigned Bytes) {
|
||||
assert(Bytes && "Invalid size!");
|
||||
return Value & ((uint64_t) (int64_t) -1 >> (64 - Bytes * 8));
|
||||
}
|
||||
|
||||
static inline MCValue truncateToSize(const MCValue &Value, unsigned Bytes) {
|
||||
return MCValue::get(Value.getSymA(), Value.getSymB(),
|
||||
truncateToSize(Value.getCst(), Bytes));
|
||||
}
|
||||
|
||||
void MCAsmStreamer::SwitchSection(MCSection *Section) {
|
||||
if (Section != CurSection) {
|
||||
CurSection = Section;
|
||||
@ -148,7 +158,7 @@ void MCAsmStreamer::EmitValue(const MCValue &Value, unsigned Size) {
|
||||
case 8: OS << ".quad"; break;
|
||||
}
|
||||
|
||||
OS << ' ' << Value << '\n';
|
||||
OS << ' ' << truncateToSize(Value, Size) << '\n';
|
||||
}
|
||||
|
||||
void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
|
||||
@ -169,7 +179,7 @@ void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
|
||||
|
||||
OS << ' ' << Pow2;
|
||||
|
||||
OS << ", " << Value;
|
||||
OS << ", " << truncateToSize(Value, ValueSize);
|
||||
if (MaxBytesToEmit)
|
||||
OS << ", " << MaxBytesToEmit;
|
||||
OS << '\n';
|
||||
|
Loading…
Reference in New Issue
Block a user