On Tue, Sep 17, 2013 at 05:24:22PM +0200, Marek Polacek wrote:
> This patch adds the no_sanitize_undefined attribute, so the user can tell
> that a particular function should be ignored by ubsan.

Does this correspond to some llvm attribute?

> --- gcc/builtins.c.mp2        2013-09-17 16:13:26.623161281 +0200
> +++ gcc/builtins.c    2013-09-17 16:15:20.846557451 +0200
> @@ -10313,7 +10313,9 @@ fold_builtin_0 (location_t loc, tree fnd
>        return fold_builtin_classify_type (NULL_TREE);
>  
>      case BUILT_IN_UNREACHABLE:
> -      if (flag_sanitize & SANITIZE_UNREACHABLE)
> +      if (flag_sanitize & SANITIZE_UNREACHABLE
> +       && !lookup_attribute ("no_sanitize_undefined",
> +                             DECL_ATTRIBUTES (current_function_decl)))
>       return ubsan_instrument_unreachable (loc);
>        break;

I wonder if current_function_decl couldn't be NULL here, say if
__builtin_unreachable () appears in C++ global var initializers or similar.

        Jakub

Reply via email to