Revert some redundant parts of r142605.

This seems like redundant leftovers from r142288 - exposing
TargetData::parseSpecifier to LLParser - which got reverted. Removes
redunant td != NULL checks in parseSpecifier, and simplifies the
interface to parseSpecifier and init.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167924 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Patrik Hägglund 2012-11-14 09:04:56 +00:00
parent 1ab489a42d
commit 1e65676a12
2 changed files with 23 additions and 33 deletions

View File

@ -148,9 +148,9 @@ private:
return &align != &InvalidPointerElem;
}
/// Initialise a DataLayout object with default values, ensure that the
/// target data pass is registered.
void init();
/// Parses a target data specification string. Returns an error message
/// if the string is malformed, or the empty string on success.
std::string parseSpecifier(StringRef LayoutDescription);
public:
/// Default ctor.
@ -162,17 +162,9 @@ public:
/// Constructs a DataLayout from a specification string. See init().
explicit DataLayout(StringRef LayoutDescription)
: ImmutablePass(ID) {
std::string errMsg = parseSpecifier(LayoutDescription, this);
assert(errMsg == "" && "Invalid target data layout string.");
(void)errMsg;
init(LayoutDescription);
}
/// Parses a target data specification string. Returns an error message
/// if the string is malformed, or the empty string on success. Optionally
/// initialises a DataLayout object if passed a non-null pointer.
static std::string parseSpecifier(StringRef LayoutDescription,
DataLayout* td = 0);
/// Initialize target data from properties stored in the module.
explicit DataLayout(const Module *M);
@ -187,6 +179,10 @@ public:
~DataLayout(); // Not virtual, do not subclass this class
/// Parse a data layout string (with fallback to default values). Ensure that
/// the data layout pass is registered.
void init(StringRef LayoutDescription);
/// Layout endianness...
bool isLittleEndian() const { return LittleEndian; }
bool isBigEndian() const { return !LittleEndian; }

View File

@ -159,7 +159,7 @@ static int getInt(StringRef R) {
return Result;
}
void DataLayout::init() {
void DataLayout::init(StringRef Desc) {
initializeDataLayoutPass(*PassRegistry::getPassRegistry());
LayoutMap = 0;
@ -180,12 +180,13 @@ void DataLayout::init() {
setAlignment(VECTOR_ALIGN, 16, 16, 128); // v16i8, v8i16, v4i32, ...
setAlignment(AGGREGATE_ALIGN, 0, 8, 0); // struct
setPointerAlignment(0, 8, 8, 8);
std::string errMsg = parseSpecifier(Desc);
assert(errMsg == "" && "Invalid target data layout string.");
(void)errMsg;
}
std::string DataLayout::parseSpecifier(StringRef Desc, DataLayout *td) {
if (td)
td->init();
std::string DataLayout::parseSpecifier(StringRef Desc) {
while (!Desc.empty()) {
std::pair<StringRef, StringRef> Split = Desc.split('-');
@ -203,12 +204,10 @@ std::string DataLayout::parseSpecifier(StringRef Desc, DataLayout *td) {
switch (Specifier[0]) {
case 'E':
if (td)
td->LittleEndian = false;
LittleEndian = false;
break;
case 'e':
if (td)
td->LittleEndian = true;
LittleEndian = true;
break;
case 'p': {
int AddrSpace = 0;
@ -240,9 +239,8 @@ std::string DataLayout::parseSpecifier(StringRef Desc, DataLayout *td) {
if (PointerPrefAlignBits == 0)
PointerPrefAlignBits = PointerABIAlignBits;
if (td)
td->setPointerAlignment(AddrSpace, PointerABIAlignBits/8,
PointerPrefAlignBits/8, PointerMemSizeBits/8);
setPointerAlignment(AddrSpace, PointerABIAlignBits/8,
PointerPrefAlignBits/8, PointerMemSizeBits/8);
break;
}
case 'i':
@ -284,9 +282,8 @@ std::string DataLayout::parseSpecifier(StringRef Desc, DataLayout *td) {
unsigned PrefAlign = PrefAlignBits / 8;
if (PrefAlign == 0)
PrefAlign = ABIAlign;
setAlignment(AlignType, ABIAlign, PrefAlign, Size);
if (td)
td->setAlignment(AlignType, ABIAlign, PrefAlign, Size);
break;
}
case 'n': // Native integer types.
@ -297,8 +294,8 @@ std::string DataLayout::parseSpecifier(StringRef Desc, DataLayout *td) {
return std::string("invalid native integer size \'") +
Specifier.str() + "\', must be a positive integer.";
}
if (td && Width != 0)
td->LegalIntWidths.push_back(Width);
if (Width != 0)
LegalIntWidths.push_back(Width);
Split = Token.split(':');
Specifier = Split.first;
Token = Split.second;
@ -310,8 +307,7 @@ std::string DataLayout::parseSpecifier(StringRef Desc, DataLayout *td) {
return "invalid natural stack alignment (S-field), "
"must be a positive 8-bit multiple";
}
if (td)
td->StackNaturalAlign = StackNaturalAlignBits / 8;
StackNaturalAlign = StackNaturalAlignBits / 8;
break;
}
default:
@ -333,9 +329,7 @@ DataLayout::DataLayout() : ImmutablePass(ID) {
DataLayout::DataLayout(const Module *M)
: ImmutablePass(ID) {
std::string errMsg = parseSpecifier(M->getDataLayout(), this);
assert(errMsg == "" && "Module M has malformed data layout string.");
(void)errMsg;
init(M->getDataLayout());
}
void