mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 23:32:58 +00:00
Don't allow MCStreamer::EmitIntValue to output 0-byte integers.
It makes no sense and can hide bugs. In particular, it lead to left shift by 64 bits, which is an undefined behavior, properly reported by UBSan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216134 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d28e4c1735
commit
9ec471a5d8
@ -2612,7 +2612,8 @@ bool AsmParser::parseDirectiveFill() {
|
||||
|
||||
for (uint64_t i = 0, e = NumValues; i != e; ++i) {
|
||||
getStreamer().EmitIntValue(FillExpr, NonZeroFillSize);
|
||||
getStreamer().EmitIntValue(0, FillSize - NonZeroFillSize);
|
||||
if (NonZeroFillSize < FillSize)
|
||||
getStreamer().EmitIntValue(0, FillSize - NonZeroFillSize);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -72,7 +72,7 @@ void MCStreamer::generateCompactUnwindEncodings(MCAsmBackend *MAB) {
|
||||
/// EmitIntValue - Special case of EmitValue that avoids the client having to
|
||||
/// pass in a MCExpr for constant integers.
|
||||
void MCStreamer::EmitIntValue(uint64_t Value, unsigned Size) {
|
||||
assert(Size <= 8 && "Invalid size");
|
||||
assert(1 <= Size && Size <= 8 && "Invalid size");
|
||||
assert((isUIntN(8 * Size, Value) || isIntN(8 * Size, Value)) &&
|
||||
"Invalid size");
|
||||
char buf[8];
|
||||
|
Loading…
x
Reference in New Issue
Block a user