From 6525783a221d88ef4e89a8e9dd01c7bfd82ec711 Mon Sep 17 00:00:00 2001
From: Marek Polacek <polacek@redhat.com>
Date: Tue, 8 Apr 2014 17:23:26 +0000
Subject: [PATCH] re PR sanitizer/60745 (Many ICEs running libstdc++ testsuite
 with ubsan, maybe due to PCH)

	PR sanitizer/60745
	* c-ubsan.c: Include asan.h.
	(ubsan_instrument_return): Call initialize_sanitizer_builtins.

From-SVN: r209222
---
 gcc/c-family/ChangeLog | 6 ++++++
 gcc/c-family/c-ubsan.c | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index e2b047482c55..152c3b7def33 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2014-04-08  Marek Polacek  <polacek@redhat.com>
+
+	PR sanitizer/60745
+	* c-ubsan.c: Include asan.h.
+	(ubsan_instrument_return): Call initialize_sanitizer_builtins.
+
 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
 
 	* c.opt (Wnon-virtual-dtor): Auto set when Weffc++.
diff --git a/gcc/c-family/c-ubsan.c b/gcc/c-family/c-ubsan.c
index dc4d98147b32..e89ebc1873be 100644
--- a/gcc/c-family/c-ubsan.c
+++ b/gcc/c-family/c-ubsan.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "ubsan.h"
 #include "c-family/c-common.h"
 #include "c-family/c-ubsan.h"
+#include "asan.h"
 
 /* Instrument division by zero and INT_MIN / -1.  If not instrumenting,
    return NULL_TREE.  */
@@ -185,6 +186,10 @@ ubsan_instrument_vla (location_t loc, tree size)
 tree
 ubsan_instrument_return (location_t loc)
 {
+  /* It is possible that PCH zapped table with definitions of sanitizer
+     builtins.  Reinitialize them if needed.  */
+  initialize_sanitizer_builtins ();
+
   tree data = ubsan_create_data ("__ubsan_missing_return_data", &loc,
 				 NULL, NULL_TREE);
   tree t = builtin_decl_explicit (BUILT_IN_UBSAN_HANDLE_MISSING_RETURN);
-- 
GitLab