Index: include/llvm/ADT/Triple.h =================================================================== --- include/llvm/ADT/Triple.h +++ include/llvm/ADT/Triple.h @@ -91,7 +91,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 @@ -66,6 +66,7 @@ case wasm64: return "wasm64"; case renderscript32: return "renderscript32"; case renderscript64: return "renderscript64"; + case aap: return "aap"; } llvm_unreachable("Invalid ArchType!"); @@ -134,6 +135,7 @@ case shave: return "shave"; case wasm32: case wasm64: return "wasm"; + case aap: return "aap"; } } @@ -286,6 +288,7 @@ .Case("wasm64", wasm64) .Case("renderscript32", renderscript32) .Case("renderscript64", renderscript64) + .Case("aap", aap) .Default(UnknownArch); } @@ -397,6 +400,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 @@ -579,6 +583,7 @@ return Triple::COFF; return Triple::ELF; + case Triple::aap: case Triple::aarch64_be: case Triple::amdgcn: case Triple::amdil: @@ -1121,6 +1126,7 @@ case llvm::Triple::avr: case llvm::Triple::msp430: + case llvm::Triple::aap: return 16; case llvm::Triple::arm: @@ -1196,6 +1202,7 @@ case Triple::msp430: case Triple::systemz: case Triple::ppc64le: + case Triple::aap: T.setArch(UnknownArch); break; @@ -1258,6 +1265,7 @@ case Triple::xcore: case Triple::sparcel: case Triple::shave: + case Triple::aap: T.setArch(UnknownArch); break; @@ -1334,6 +1342,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. @@ -1420,6 +1429,7 @@ case Triple::xcore: 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 @@ -224,6 +224,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()); @@ -537,6 +549,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());