Index: include/llvm/ADT/Triple.h =================================================================== --- include/llvm/ADT/Triple.h +++ include/llvm/ADT/Triple.h @@ -95,7 +95,8 @@ wasm64, // WebAssembly with 64-bit pointers renderscript32, // 32-bit RenderScript renderscript64, // 64-bit RenderScript - LastArchType = renderscript64 + aap, // AAP architecture + LastArchType = aap }; enum SubArchType { NoSubArch, Index: lib/Support/Triple.cpp =================================================================== --- lib/Support/Triple.cpp +++ lib/Support/Triple.cpp @@ -70,6 +70,7 @@ case wasm64: return "wasm64"; case renderscript32: return "renderscript32"; case renderscript64: return "renderscript64"; + case aap: return "aap"; } llvm_unreachable("Invalid ArchType!"); @@ -143,6 +144,8 @@ case riscv32: case riscv64: return "riscv"; + + case aap: return "aap"; } } @@ -303,6 +306,7 @@ .Case("wasm64", wasm64) .Case("renderscript32", renderscript32) .Case("renderscript64", renderscript64) + .Case("aap", aap) .Default(UnknownArch); } @@ -418,6 +422,7 @@ .Case("wasm64", Triple::wasm64) .Case("renderscript32", Triple::renderscript32) .Case("renderscript64", Triple::renderscript64) + .Case("aap", Triple::aap) .Default(Triple::UnknownArch); // Some architectures require special parsing logic just to compute the @@ -610,6 +615,7 @@ return Triple::COFF; return Triple::ELF; + case Triple::aap: case Triple::aarch64_be: case Triple::amdgcn: case Triple::amdil: @@ -1160,6 +1166,7 @@ case llvm::Triple::avr: case llvm::Triple::msp430: + case llvm::Triple::aap: return 16; case llvm::Triple::arm: @@ -1239,6 +1246,7 @@ case Triple::msp430: case Triple::systemz: case Triple::ppc64le: + case Triple::aap: T.setArch(UnknownArch); break; @@ -1307,6 +1315,7 @@ case Triple::xcore: case Triple::sparcel: case Triple::shave: + case Triple::aap: T.setArch(UnknownArch); break; @@ -1388,6 +1397,7 @@ case Triple::xcore: case Triple::renderscript32: case Triple::renderscript64: + case Triple::aap: // ARM is intentionally unsupported here, changing the architecture would // drop any arch suffixes. @@ -1479,6 +1489,7 @@ case Triple::tcele: case Triple::renderscript32: case Triple::renderscript64: + case Triple::aap: return true; default: return false; Index: unittests/ADT/TripleTest.cpp =================================================================== --- unittests/ADT/TripleTest.cpp +++ unittests/ADT/TripleTest.cpp @@ -236,6 +236,18 @@ EXPECT_EQ(Triple::UnknownOS, T.getOS()); EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + T = Triple("aap-unknown-unknown"); + EXPECT_EQ(Triple::aap, T.getArch()); + EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); + EXPECT_EQ(Triple::UnknownOS, T.getOS()); + EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + + T = Triple("aap"); + EXPECT_EQ(Triple::aap, T.getArch()); + EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); + EXPECT_EQ(Triple::UnknownOS, T.getOS()); + EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + T = Triple("lanai-unknown-unknown"); EXPECT_EQ(Triple::lanai, T.getArch()); EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); @@ -579,6 +591,11 @@ EXPECT_FALSE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); + T.setArch(Triple::aap); + EXPECT_TRUE(T.isArch16Bit()); + EXPECT_FALSE(T.isArch32Bit()); + EXPECT_FALSE(T.isArch64Bit()); + T.setArch(Triple::lanai); EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit());