diff options
author | Renato Golin <renato.golin@arm.com> | 2011-01-21 18:25:47 +0000 |
---|---|---|
committer | Renato Golin <renato.golin@arm.com> | 2011-01-21 18:25:47 +0000 |
commit | 83758d5cd7e196bb7be784d38f9c00ea501654ca (patch) | |
tree | 8075072ece25c93a153ea34835d10b42661a9fd7 /llvm/unittests/ADT/TripleTest.cpp | |
parent | fee882c20328cd3ced5620913f2a2a62b2719114 (diff) | |
download | llvm-83758d5cd7e196bb7be784d38f9c00ea501654ca.zip llvm-83758d5cd7e196bb7be784d38f9c00ea501654ca.tar.gz llvm-83758d5cd7e196bb7be784d38f9c00ea501654ca.tar.bz2 |
Clang was not parsing target triples involving EABI and was generating wrong IR (wrong PCS) and passing the wrong information down llc via the target-triple printed in IR. I've fixed this by adding the parsing of EABI into LLVM's Triple class and using it to choose the correct PCS in Clang's Tools. A Clang patch is on its way to use this infrastructure.
llvm-svn: 123990
Diffstat (limited to 'llvm/unittests/ADT/TripleTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/TripleTest.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/llvm/unittests/ADT/TripleTest.cpp b/llvm/unittests/ADT/TripleTest.cpp index bcc7196..8f778c1 100644 --- a/llvm/unittests/ADT/TripleTest.cpp +++ b/llvm/unittests/ADT/TripleTest.cpp @@ -85,9 +85,7 @@ TEST(TripleTest, ParsedIDs) { EXPECT_EQ(Triple::x86_64, T.getArch()); EXPECT_EQ(Triple::PC, T.getVendor()); EXPECT_EQ(Triple::Linux, T.getOS()); - // When environments are defined, change this test to verify the "gnu" - // environment. - EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + EXPECT_EQ(Triple::GNU, T.getEnvironment()); T = Triple("powerpc-dunno-notsure"); EXPECT_EQ(Triple::ppc, T.getArch()); @@ -95,6 +93,12 @@ TEST(TripleTest, ParsedIDs) { EXPECT_EQ(Triple::UnknownOS, T.getOS()); EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + T = Triple("arm-none-eabi"); + EXPECT_EQ(Triple::arm, T.getArch()); + EXPECT_EQ(Triple::NoVendor, T.getVendor()); + EXPECT_EQ(Triple::NoOS, T.getOS()); + EXPECT_EQ(Triple::EABI, T.getEnvironment()); + T = Triple("huh"); EXPECT_EQ(Triple::UnknownArch, T.getArch()); } @@ -110,6 +114,7 @@ static std::string Join(StringRef A, StringRef B, StringRef C, StringRef D) { } TEST(TripleTest, Normalization) { + EXPECT_EQ("", Triple::normalize("")); EXPECT_EQ("-", Triple::normalize("-")); EXPECT_EQ("--", Triple::normalize("--")); @@ -144,6 +149,8 @@ TEST(TripleTest, Normalization) { EXPECT_EQ("-pc", Triple::normalize("pc")); EXPECT_EQ("--linux", Triple::normalize("linux")); + EXPECT_EQ("x86_64--linux-gnu", Triple::normalize("x86_64-gnu-linux")); + // Check that normalizing a permutated set of valid components returns a // triple with the unpermuted components. StringRef C[4]; @@ -251,6 +258,7 @@ TEST(TripleTest, MutateName) { EXPECT_EQ(Triple::PC, T.getVendor()); EXPECT_EQ(Triple::Darwin, T.getOS()); EXPECT_EQ("i386-pc-darwin", T.getTriple()); + } } |