From f9a75d221c676d3122c46c496b00b0f84f0c0ebf Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Fri, 28 May 2021 20:27:00 +0200 Subject: [PATCH] [clang] add support for builtin __underlying_type --- Clang_utils.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Clang_utils.cpp b/Clang_utils.cpp index d1ac0e70..253b5d35 100644 --- a/Clang_utils.cpp +++ b/Clang_utils.cpp @@ -24,6 +24,8 @@ #include "Clang_utils.h" #include "ClangVisitor.h" +#include <clang/AST/Type.h> +#include <llvm/Support/Casting.h> extern "C" { @@ -1857,7 +1859,12 @@ Clang_utils::makePlainType( exp_node_Constant(compilation_constant_IntCst( IINT,ICLITERAL,arrayType->getNumElements()))))); return typ_Array(arrayKind); - } + } + case clang::Type::UnaryTransform: { + auto utt = llvm::dyn_cast<const clang::UnaryTransformType>(type); + auto integer_type = utt->getUnderlyingType(); + return makePlainType(loc, integer_type, declRegistration, isPOD); + } case clang::Type::BlockPointer: unsupported_kind = "block pointer"; break; case clang::Type::Complex: @@ -2877,7 +2884,7 @@ Clang_utils::logicArithmeticPromotion( return elaborated->isSugared() ? logicArithmeticPromotion(loc, elaborated->desugar().getTypePtr()) : NULL; - } + } default: break; } return NULL; -- GitLab