diff options
Diffstat (limited to 'clang/lib/CodeGen/CodeGenTBAA.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenTBAA.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenTBAA.cpp b/clang/lib/CodeGen/CodeGenTBAA.cpp index 7d730cb1ed154..f4ebe68856758 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<ExtIntType>(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(); } |