================ @@ -3717,6 +3717,33 @@ static void emitCheckHandlerCall(CodeGenFunction &CGF, } } +// Adapts the arguments to the handler function. +// It is expected that {StaticArgs..., DynamicArgs...} sequence matches the +// corresponding XxxData type from the ubsan_handlers.h file. +// Minimal hadler can use a subset of the arguments. +static void +AdaptArgsToHandler(CodeGenModule &CGM, SanitizerHandler CheckHandler, + ArrayRef<llvm::Constant *> StaticArgs, + ArrayRef<llvm::Value *> DynamicArgs, + SmallVectorImpl<llvm::Constant *> &HandlerStaticArgs, + SmallVectorImpl<llvm::Value *> &HandlerDynamicArgs) { + if (!CGM.getCodeGenOpts().SanitizeMinimalRuntime) { + HandlerStaticArgs.assign(StaticArgs.begin(), StaticArgs.end()); + HandlerDynamicArgs.assign(DynamicArgs.begin(), DynamicArgs.end()); + return; + } + + switch (CheckHandler) { + case SanitizerHandler::TypeMismatch: + // Pass value pointer only. It adds minimal overhead. + HandlerDynamicArgs.assign(DynamicArgs.begin(), DynamicArgs.end()); ---------------- alazarev wrote:
Done https://github.com/llvm/llvm-project/pull/152192 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits