[AsmParser] Report invalid data layout more gracefully
Report this as a normal LLParser error, rather than a fatal error.
This commit is contained in:
parent
d4892a168f
commit
ee4d09b8bb
|
@ -456,10 +456,15 @@ bool LLParser::parseTargetDefinition() {
|
|||
return false;
|
||||
case lltok::kw_datalayout:
|
||||
Lex.Lex();
|
||||
if (parseToken(lltok::equal, "expected '=' after target datalayout") ||
|
||||
parseStringConstant(Str))
|
||||
if (parseToken(lltok::equal, "expected '=' after target datalayout"))
|
||||
return true;
|
||||
M->setDataLayout(Str);
|
||||
LocTy Loc = Lex.getLoc();
|
||||
if (parseStringConstant(Str))
|
||||
return true;
|
||||
Expected<DataLayout> MaybeDL = DataLayout::parse(Str);
|
||||
if (!MaybeDL)
|
||||
return error(Loc, toString(std::move(MaybeDL.takeError())));
|
||||
M->setDataLayout(MaybeDL.get());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: not --crash llvm-as %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as %s 2>&1 | FileCheck %s
|
||||
|
||||
; CHECK: LLVM ERROR: Alignment is neither 0 nor a power of 2
|
||||
; CHECK: error: Alignment is neither 0 nor a power of 2
|
||||
|
||||
target datalayout = "Fi24"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: not --crash llvm-as %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as %s 2>&1 | FileCheck %s
|
||||
|
||||
; CHECK: LLVM ERROR: Alignment is neither 0 nor a power of 2
|
||||
; CHECK: error: Alignment is neither 0 nor a power of 2
|
||||
|
||||
target datalayout = "S24"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash opt < %s 2>&1 | grep 'not a number, or does not fit in an unsigned int'
|
||||
; RUN: not opt < %s 2>&1 | grep 'not a number, or does not fit in an unsigned int'
|
||||
|
||||
target datalayout = "p:4294967296:64:64"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "A16777216"
|
||||
; CHECK: Invalid address space, must be a 24-bit integer
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
; CHECK: Invalid address space, must be a 24-bit integer
|
||||
target datalayout = "G16777216"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
; CHECK: Invalid address space, must be a 24-bit integer
|
||||
target datalayout = "P16777216"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "^"
|
||||
; CHECK: Unknown specifier in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "m"
|
||||
; CHECK: Expected mangling specifier in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "m."
|
||||
; CHECK: Unexpected trailing characters after mangling specifier in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "f"
|
||||
; CHECK: Missing alignment specification in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = ":32"
|
||||
; CHECK: Expected token before separator in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "i64:64:16"
|
||||
; CHECK: Preferred alignment cannot be less than the ABI alignment
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "i64:16:16777216"
|
||||
; CHECK: Invalid preferred alignment, must be a 16bit integer
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "i64:16777216:16777216"
|
||||
; CHECK: Invalid ABI alignment, must be a 16bit integer
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "i16777216:16:16"
|
||||
; CHECK: Invalid bit width, must be a 24bit integer
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "p:32:32:16"
|
||||
; CHECK: Preferred alignment cannot be less than the ABI alignment
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "p:0:32:32"
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "m:v"
|
||||
; CHECK: Unknown mangling in datalayout string
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "p:64:24:64"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "p:64:64:24"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "v128:0:128"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "i32:24:32"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "i32:32:24"
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "n0"
|
||||
; CHECK: Zero width native integer type in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "p16777216:64:64:64"
|
||||
; CHECK: Invalid address space, must be a 24bit integer
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "a1:64"
|
||||
; CHECK: Sized aggregate specification in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "a:"
|
||||
; CHECK: Trailing separator in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "p:48:52"
|
||||
; CHECK: number of bits must be a byte width multiple
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "e-p"
|
||||
; CHECK: Missing size specification for pointer in datalayout string
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
; RUN: not --crash llvm-as < %s 2>&1 | FileCheck %s
|
||||
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
|
||||
target datalayout = "e-p:64"
|
||||
; CHECK: Missing alignment specification for pointer in datalayout string
|
||||
|
|
Loading…
Reference in New Issue