gallivm: set LLVMNoUnwindAttribute on all intrinsics
authorMarek Olšák <marek.olsak@amd.com>
Fri, 1 Jul 2016 18:09:47 +0000 (20:09 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 11 Jul 2016 17:06:05 +0000 (19:06 +0200)
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 <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_intr.c

index 0a8f996a63e00192c0fdda5861af144e78947c1e..f12e735b5ee7f52f353dc01f6cdfa4383ac22c25 100644 (file)
@@ -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);