diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp index ba160373ec77e..0fa7511103879 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp @@ -650,6 +650,10 @@ mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID, case X86::BI__builtin_ia32_sqrtpd: case X86::BI__builtin_ia32_sqrtps256: case X86::BI__builtin_ia32_sqrtps: + CGF.CGM.getDiags().Report(E->getExprLoc(), diag::err_cir_nyi) + << "__builtin_ia32_sqrtps"; + return CIRGenFunction::IgnoreValue(); + case X86::BI__builtin_ia32_sqrtph256: case X86::BI__builtin_ia32_sqrtph: case X86::BI__builtin_ia32_sqrtph512: diff --git a/clang/lib/CIR/CodeGen/CIRGenCleanup.cpp b/clang/lib/CIR/CodeGen/CIRGenCleanup.cpp index 33f2de9137514..9bfdcea5ba275 100644 --- a/clang/lib/CIR/CodeGen/CIRGenCleanup.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenCleanup.cpp @@ -21,6 +21,7 @@ #include "clang/CIR/MissingFeatures.h" +#include using namespace clang; using namespace clang::CIRGen; @@ -97,7 +98,7 @@ EHScopeStack::getInnermostActiveNormalCleanup() const { char *EHScopeStack::allocate(size_t size) { size = llvm::alignTo(size, ScopeStackAlignment); if (!startOfBuffer) { - unsigned capacity = llvm::PowerOf2Ceil(std::max(size, 1024ul)); + unsigned capacity = llvm::PowerOf2Ceil(std::max(static_cast(size), 1024ul)); startOfBuffer = std::make_unique(capacity); startOfData = endOfBuffer = startOfBuffer.get() + capacity; } else if (static_cast(startOfData - startOfBuffer.get()) < size) { diff --git a/clang/test/CIR/CodeGen/X86/builtin-x86-sqrt.c b/clang/test/CIR/CodeGen/X86/builtin-x86-sqrt.c new file mode 100644 index 0000000000000..3692643c219e4 --- /dev/null +++ b/clang/test/CIR/CodeGen/X86/builtin-x86-sqrt.c @@ -0,0 +1,14 @@ +// RUN: not %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir -o - %s 2>&1 | FileCheck %s + +// Minimal stand-in for the SSE vector type. +typedef float __m128 __attribute__((__vector_size__(16))); + +// Declare the builtin explicitly so we don't need headers. +__m128 __builtin_ia32_sqrtps(__m128); + +__m128 test_sqrtps(__m128 a) { + return __builtin_ia32_sqrtps(a); +} + +// CHECK: error: ClangIR code gen Not Yet Implemented: CIR lowering for x86 sqrt builtins is not implemented yet +// CHECK: error: ClangIR code gen Not Yet Implemented: unimplemented builtin call: __builtin_ia32_sqrtps