From cfca06d7963fa0909f90483b42a6d7d194d01e08 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sun, 26 Jul 2020 19:36:28 +0000 Subject: Vendor import of llvm-project master 2e10b7a39b9, the last commit before the llvmorg-12-init tag, from which release/11.x was branched. --- clang/lib/CodeGen/CodeGenTBAA.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'clang/lib/CodeGen/CodeGenTBAA.cpp') diff --git a/clang/lib/CodeGen/CodeGenTBAA.cpp b/clang/lib/CodeGen/CodeGenTBAA.cpp index 7d730cb1ed15..f4ebe6885675 100644 --- a/clang/lib/CodeGen/CodeGenTBAA.cpp +++ b/clang/lib/CodeGen/CodeGenTBAA.cpp @@ -141,6 +141,34 @@ llvm::MDNode *CodeGenTBAA::getTypeInfoHelper(const Type *Ty) { case BuiltinType::UInt128: return getTypeInfo(Context.Int128Ty); + case BuiltinType::UShortFract: + return getTypeInfo(Context.ShortFractTy); + case BuiltinType::UFract: + return getTypeInfo(Context.FractTy); + case BuiltinType::ULongFract: + return getTypeInfo(Context.LongFractTy); + + case BuiltinType::SatUShortFract: + return getTypeInfo(Context.SatShortFractTy); + case BuiltinType::SatUFract: + return getTypeInfo(Context.SatFractTy); + case BuiltinType::SatULongFract: + return getTypeInfo(Context.SatLongFractTy); + + case BuiltinType::UShortAccum: + return getTypeInfo(Context.ShortAccumTy); + case BuiltinType::UAccum: + return getTypeInfo(Context.AccumTy); + case BuiltinType::ULongAccum: + return getTypeInfo(Context.LongAccumTy); + + case BuiltinType::SatUShortAccum: + return getTypeInfo(Context.SatShortAccumTy); + case BuiltinType::SatUAccum: + return getTypeInfo(Context.SatAccumTy); + case BuiltinType::SatULongAccum: + return getTypeInfo(Context.SatLongAccumTy); + // Treat all other builtin types as distinct types. This includes // treating wchar_t, char16_t, and char32_t as distinct from their // "underlying types". @@ -181,6 +209,15 @@ llvm::MDNode *CodeGenTBAA::getTypeInfoHelper(const Type *Ty) { return createScalarTypeNode(OutName, getChar(), Size); } + if (const auto *EIT = dyn_cast(Ty)) { + SmallString<256> OutName; + llvm::raw_svector_ostream Out(OutName); + // Don't specify signed/unsigned since integer types can alias despite sign + // differences. + Out << "_ExtInt(" << EIT->getNumBits() << ')'; + return createScalarTypeNode(OutName, getChar(), Size); + } + // For now, handle any other kind of type conservatively. return getChar(); } -- cgit v1.2.3