From d7b6f90684e415b8e9f2d5cd30b9503a7e39a00e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 1 Jul 2016 20:09:47 +0200 Subject: [PATCH] gallivm: set LLVMNoUnwindAttribute on all intrinsics RadeonSI stats: Mostly 0% difference, but Valley shows a small improvement: Application Files SGPRs VGPRs SpillSGPR SpillVGPR Code Size LDS Max Waves Waits unigine_valley 278 0.00 % -0.29 % 0.00 % 0.00 % 0.01 % 0.00 % 0.17 % 0.00 % Reviewed-by: Jose Fonseca --- src/gallium/auxiliary/gallivm/lp_bld_intr.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_intr.c b/src/gallium/auxiliary/gallivm/lp_bld_intr.c index 0a8f996..f12e735 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_intr.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_intr.c @@ -145,8 +145,10 @@ lp_build_intrinsic(LLVMBuilderRef builder, function = lp_declare_intrinsic(module, name, ret_type, arg_types, num_args); - if (attr) - LLVMAddFunctionAttr(function, attr); + /* NoUnwind indicates that the intrinsic never raises a C++ exception. + * Set it for all intrinsics. + */ + LLVMAddFunctionAttr(function, attr | LLVMNoUnwindAttribute); if (gallivm_debug & GALLIVM_DEBUG_IR) { lp_debug_dump_value(function); -- 2.7.4