Skip to content

[UnitTests] Convert some data layout parsing tests to GTest #104346

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

5 changes: 0 additions & 5 deletions llvm/test/Assembler/datalayout-invalid-i8-alignment.ll

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions llvm/test/Assembler/invalid-datalayout-alloca-addrspace.ll

This file was deleted.

4 changes: 0 additions & 4 deletions llvm/test/Assembler/invalid-datalayout-globals-addrspace.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout-index-size.ll

This file was deleted.

4 changes: 0 additions & 4 deletions llvm/test/Assembler/invalid-datalayout-program-addrspace.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout1.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout10.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout11.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout12.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout13.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout14.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout15.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout16.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout17.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout18.ll

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/test/Assembler/invalid-datalayout19.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout2.ll

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/test/Assembler/invalid-datalayout20.ll

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/test/Assembler/invalid-datalayout21.ll

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/test/Assembler/invalid-datalayout22.ll

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/test/Assembler/invalid-datalayout23.ll

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/test/Assembler/invalid-datalayout24.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout3.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout4.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout5.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout6.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout7.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout8.ll

This file was deleted.

3 changes: 0 additions & 3 deletions llvm/test/Assembler/invalid-datalayout9.ll

This file was deleted.

105 changes: 105 additions & 0 deletions llvm/unittests/IR/DataLayoutTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,111 @@ using namespace llvm;

namespace {

// TODO: Split into multiple TESTs.
TEST(DataLayoutTest, ParseErrors) {
EXPECT_THAT_EXPECTED(
DataLayout::parse("^"),
FailedWithMessage("Unknown specifier in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("m:v"),
FailedWithMessage("Unknown mangling in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("n0"),
FailedWithMessage("Zero width native integer type in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("p16777216:64:64:64"),
FailedWithMessage("Invalid address space, must be a 24-bit integer"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("a1:64"),
FailedWithMessage("Sized aggregate specification in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("a:"),
FailedWithMessage("Trailing separator in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("p:48:52"),
FailedWithMessage("number of bits must be a byte width multiple"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("e-p"),
FailedWithMessage(
"Missing size specification for pointer in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("e-p:64"),
FailedWithMessage(
"Missing alignment specification for pointer in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("m"),
FailedWithMessage("Expected mangling specifier in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("m."),
FailedWithMessage("Unexpected trailing characters after mangling "
"specifier in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("f"),
FailedWithMessage(
"Missing alignment specification in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse(":32"),
FailedWithMessage(
"Expected token before separator in datalayout string"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("i64:64:16"),
FailedWithMessage(
"Preferred alignment cannot be less than the ABI alignment"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("i64:16:16777216"),
FailedWithMessage(
"Invalid preferred alignment, must be a 16bit integer"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("i64:16777216:16777216"),
FailedWithMessage("Invalid ABI alignment, must be a 16bit integer"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("i16777216:16:16"),
FailedWithMessage("Invalid bit width, must be a 24-bit integer"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("p:32:32:16"),
FailedWithMessage(
"Preferred alignment cannot be less than the ABI alignment"));
EXPECT_THAT_EXPECTED(DataLayout::parse("p:0:32:32"),
FailedWithMessage("Invalid pointer size of 0 bytes"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("p:64:24:64"),
FailedWithMessage("Pointer ABI alignment must be a power of 2"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("p:64:64:24"),
FailedWithMessage("Pointer preferred alignment must be a power of 2"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("p:64:64:64:128"),
FailedWithMessage("Index width cannot be larger than pointer width"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("v128:0:128"),
FailedWithMessage(
"ABI alignment specification must be >0 for non-aggregate types"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("i32:24:32"),
FailedWithMessage("Invalid ABI alignment, must be a power of 2"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("i32:32:24"),
FailedWithMessage("Invalid preferred alignment, must be a power of 2"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("A16777216"),
FailedWithMessage("Invalid address space, must be a 24-bit integer"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("G16777216"),
FailedWithMessage("Invalid address space, must be a 24-bit integer"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("P16777216"),
FailedWithMessage("Invalid address space, must be a 24-bit integer"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("Fi24"),
FailedWithMessage("Alignment is neither 0 nor a power of 2"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("i8:16"),
FailedWithMessage("Invalid ABI alignment, i8 must be naturally aligned"));
EXPECT_THAT_EXPECTED(
DataLayout::parse("S24"),
FailedWithMessage("Alignment is neither 0 nor a power of 2"));
}

TEST(DataLayoutTest, CopyAssignmentInvalidatesStructLayout) {
DataLayout DL1 = cantFail(DataLayout::parse("p:32:32"));
DataLayout DL2 = cantFail(DataLayout::parse("p:64:64"));
Expand Down
Loading