mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123990 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user