Teach DataLayout that zero-byte pointer sizes don't make sense.

Previously this would result in assertion failures or simply crashes
at various points in the optimizer when trying to create types of zero
bit width.

llvm-svn: 230936
This commit is contained in:
Owen Anderson 2015-03-02 06:00:02 +00:00
parent 576a9a2728
commit 5bc2bbe601
2 changed files with 8 additions and 0 deletions

View File

@ -259,6 +259,8 @@ void DataLayout::parseSpecifier(StringRef Desc) {
"Missing size specification for pointer in datalayout string");
Split = split(Rest, ':');
unsigned PointerMemSize = inBytes(getInt(Tok));
if (!PointerMemSize)
report_fatal_error("Invalid pointer size of 0 bytes");
// ABI alignment.
if (Rest.empty())

View File

@ -0,0 +1,6 @@
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
target datalayout = "p:0:32:32"
; CHECK: Invalid pointer size of 0 bytes