On 11/25/2015 02:21 PM, Jakub Jelinek wrote:
Thanks.  Though, perhaps we could guard those new two stmts with
   if (flag_sanitize & SANITIZE_UNDEFINED)
? No need to generate a useless attribute in the common case.

OK, sure.



commit 1c63a34b1d44cb6eb29e38c49660cb66c175c72b
Author: Jason Merrill <ja...@redhat.com>
Date:   Wed Nov 25 15:28:18 2015 -0500

    	* lambda.c (maybe_add_lambda_conv_op): Only set
    	no_sanitize_undefined if SANITIZE_NULL.

diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c
index f9b686b..8d1ee14 100644
--- a/gcc/cp/lambda.c
+++ b/gcc/cp/lambda.c
@@ -1053,11 +1053,14 @@ maybe_add_lambda_conv_op (tree type)
   if (generic_lambda_p)
     fn = add_inherited_template_parms (fn, DECL_TI_TEMPLATE (callop));
 
-  /* Don't UBsan this function; we're deliberately calling op() with a null
-     object argument.  */
-  tree attrs = build_tree_list (get_identifier ("no_sanitize_undefined"),
-				NULL_TREE);
-  cplus_decl_attributes (&fn, attrs, 0);
+  if (flag_sanitize & SANITIZE_NULL)
+    {
+      /* Don't UBsan this function; we're deliberately calling op() with a null
+	 object argument.  */
+      tree attrs = build_tree_list (get_identifier ("no_sanitize_undefined"),
+				    NULL_TREE);
+      cplus_decl_attributes (&fn, attrs, 0);
+    }
 
   add_method (type, fn, NULL_TREE);
 

Reply via email to