summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-12-10 02:36:41 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-12-10 02:36:41 +0000
commit612f31284e423904d3afa255ed20ac36f2a1e010 (patch)
treed848772680047e4f4f7dbbaa98c4e53520366606 /llvm/lib
parent1fe0c18914957a2f8bd74aef7b2bcf192dbba98b (diff)
downloadbcm5719-llvm-612f31284e423904d3afa255ed20ac36f2a1e010.tar.gz
bcm5719-llvm-612f31284e423904d3afa255ed20ac36f2a1e010.zip
DataLayout: Provide nicer diagnostics for malformed strings
llvm-svn: 223911
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/IR/DataLayout.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/IR/DataLayout.cpp b/llvm/lib/IR/DataLayout.cpp
index 4e0c066b1c8..cde393777a6 100644
--- a/llvm/lib/IR/DataLayout.cpp
+++ b/llvm/lib/IR/DataLayout.cpp
@@ -199,6 +199,8 @@ static std::pair<StringRef, StringRef> split(StringRef Str, char Separator) {
std::pair<StringRef, StringRef> Split = Str.split(Separator);
if (Split.second.empty() && Split.first != Str)
report_fatal_error("Trailing separator in datalayout string");
+ if (!Split.second.empty() && Split.first.empty())
+ report_fatal_error("Expected token before separator in datalayout string");
return Split;
}
@@ -297,6 +299,9 @@ void DataLayout::parseSpecifier(StringRef Desc) {
"Sized aggregate specification in datalayout string");
// ABI alignment.
+ if (Rest.empty())
+ report_fatal_error(
+ "Missing alignment specification in datalayout string");
Split = split(Rest, ':');
unsigned ABIAlign = inBytes(getInt(Tok));
@@ -328,8 +333,12 @@ void DataLayout::parseSpecifier(StringRef Desc) {
break;
}
case 'm':
- assert(Tok.empty());
- assert(Rest.size() == 1);
+ if (!Tok.empty())
+ report_fatal_error("Unexpected trailing characters after mangling specifier in datalayout string");
+ if (Rest.empty())
+ report_fatal_error("Expected mangling specifier in datalayout string");
+ if (Rest.size() > 1)
+ report_fatal_error("Unknown mangling specifier in datalayout string");
switch(Rest[0]) {
default:
report_fatal_error("Unknown mangling in datalayout string");
OpenPOWER on IntegriCloud