Hi!

While most of the sanitization is done in the FEs (c-family/),
some is done in the middle-end (ubsan pass) or when folding
__builtin_unreachable ().

This patch fixes ICE with that, bootstrapped/regtested on x86_64-linux and
i686-linux, committed to trunk as obvious.

2014-03-18  Jakub Jelinek  <ja...@redhat.com>

        PR sanitizer/60557
        * ubsan.c (ubsan_instrument_unreachable): Call
        initialize_sanitizer_builtins.
        (ubsan_pass): Likewise.

--- gcc/ubsan.c.jj      2014-03-17 20:01:34.000000000 +0100
+++ gcc/ubsan.c 2014-03-18 07:14:50.889409415 +0100
@@ -512,6 +512,7 @@ ubsan_create_data (const char *name, loc
 tree
 ubsan_instrument_unreachable (location_t loc)
 {
+  initialize_sanitizer_builtins ();
   tree data = ubsan_create_data ("__ubsan_unreachable_data", loc, NULL,
                                 NULL_TREE);
   tree t = builtin_decl_explicit (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE);
@@ -847,6 +848,8 @@ ubsan_pass (void)
   basic_block bb;
   gimple_stmt_iterator gsi;
 
+  initialize_sanitizer_builtins ();
+
   FOR_EACH_BB_FN (bb, cfun)
     {
       for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);)

        Jakub

Reply via email to