mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
DataLayout: Move asserts over to report_fatal_error
As indicated by the tests, it is possible to feed the AsmParser an invalid datalayout string. We should verify the result of parsing this string regardless of whether or not we have assertions enabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223898 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5e40bd7d5f
commit
ef6e5490e3
@ -247,8 +247,8 @@ void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
case 'p': {
|
||||
// Address space.
|
||||
unsigned AddrSpace = Tok.empty() ? 0 : getInt(Tok);
|
||||
assert(AddrSpace < 1 << 24 &&
|
||||
"Invalid address space, must be a 24bit integer");
|
||||
if (!isUInt<24>(AddrSpace))
|
||||
report_fatal_error("Invalid address space, must be a 24bit integer");
|
||||
|
||||
// Size.
|
||||
Split = split(Rest, ':');
|
||||
@ -285,8 +285,9 @@ void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
// Bit size.
|
||||
unsigned Size = Tok.empty() ? 0 : getInt(Tok);
|
||||
|
||||
assert((AlignType != AGGREGATE_ALIGN || Size == 0) &&
|
||||
"These specifications don't have a size");
|
||||
if (AlignType == AGGREGATE_ALIGN && Size != 0)
|
||||
report_fatal_error(
|
||||
"Sized aggregate specification in datalayout string");
|
||||
|
||||
// ABI alignment.
|
||||
Split = split(Rest, ':');
|
||||
@ -306,7 +307,9 @@ void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
case 'n': // Native integer types.
|
||||
for (;;) {
|
||||
unsigned Width = getInt(Tok);
|
||||
assert(Width != 0 && "width must be non-zero");
|
||||
if (Width == 0)
|
||||
report_fatal_error(
|
||||
"Zero width native integer type in datalayout string");
|
||||
LegalIntWidths.push_back(Width);
|
||||
if (Rest.empty())
|
||||
break;
|
||||
@ -322,7 +325,7 @@ void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
assert(Rest.size() == 1);
|
||||
switch(Rest[0]) {
|
||||
default:
|
||||
llvm_unreachable("Unknown mangling in datalayout string");
|
||||
report_fatal_error("Unknown mangling in datalayout string");
|
||||
case 'e':
|
||||
ManglingMode = MM_ELF;
|
||||
break;
|
||||
@ -338,7 +341,7 @@ void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
llvm_unreachable("Unknown specifier in datalayout string");
|
||||
report_fatal_error("Unknown specifier in datalayout string");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
3
test/Assembler/invalid-datalayout1.ll
Normal file
3
test/Assembler/invalid-datalayout1.ll
Normal file
@ -0,0 +1,3 @@
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "^"
|
||||
; CHECK: Unknown specifier in datalayout string
|
3
test/Assembler/invalid-datalayout2.ll
Normal file
3
test/Assembler/invalid-datalayout2.ll
Normal file
@ -0,0 +1,3 @@
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "m:v"
|
||||
; CHECK: Unknown mangling in datalayout string
|
3
test/Assembler/invalid-datalayout3.ll
Normal file
3
test/Assembler/invalid-datalayout3.ll
Normal file
@ -0,0 +1,3 @@
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "n0"
|
||||
; CHECK: Zero width native integer type in datalayout string
|
3
test/Assembler/invalid-datalayout4.ll
Normal file
3
test/Assembler/invalid-datalayout4.ll
Normal file
@ -0,0 +1,3 @@
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "p16777216:64:64:64"
|
||||
; CHECK: Invalid address space, must be a 24bit integer
|
BIN
test/Assembler/invalid-datalayout5.bc
Normal file
BIN
test/Assembler/invalid-datalayout5.bc
Normal file
Binary file not shown.
3
test/Assembler/invalid-datalayout5.ll
Normal file
3
test/Assembler/invalid-datalayout5.ll
Normal file
@ -0,0 +1,3 @@
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "a1:64"
|
||||
; CHECK: Sized aggregate specification in datalayout string
|
Loading…
Reference in New Issue
Block a user