aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-07-21 18:17:58 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-07-21 18:17:58 +0200
commit185faecb556ca1343c84f72649e361ed39d943d2 (patch)
treede1552f3c6535426ce4f9d195ddf9aedbc518693
parentf5a459a4392cacb1750c09bd2ecee8455d12af12 (diff)
downloadgcc-185faecb556ca1343c84f72649e361ed39d943d2.zip
gcc-185faecb556ca1343c84f72649e361ed39d943d2.tar.gz
gcc-185faecb556ca1343c84f72649e361ed39d943d2.tar.bz2
re PR sanitizer/71953 (ICE using address sanitizers with PCH)
PR sanitizer/71953 * asan.c (asan_dynamic_init_call): Call asan_init_shadow_ptr_types before builtin_decl_implicit. From-SVN: r238596
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/asan.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0757c89..221a147 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-07-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/71953
+ * asan.c (asan_dynamic_init_call): Call asan_init_shadow_ptr_types
+ before builtin_decl_implicit.
+
2016-07-21 James Greenhalgh <james.greenhalgh@arm.com>
* optabs.c (emit_condiitonal_move): Short circuit for identical
diff --git a/gcc/asan.c b/gcc/asan.c
index 0900634..9047e1b 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -2159,6 +2159,9 @@ transform_statements (void)
tree
asan_dynamic_init_call (bool after_p)
{
+ if (shadow_ptr_types[0] == NULL_TREE)
+ asan_init_shadow_ptr_types ();
+
tree fn = builtin_decl_implicit (after_p
? BUILT_IN_ASAN_AFTER_DYNAMIC_INIT
: BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT);
@@ -2168,8 +2171,6 @@ asan_dynamic_init_call (bool after_p)
pretty_printer module_name_pp;
pp_string (&module_name_pp, main_input_filename);
- if (shadow_ptr_types[0] == NULL_TREE)
- asan_init_shadow_ptr_types ();
module_name_cst = asan_pp_string (&module_name_pp);
module_name_cst = fold_convert (const_ptr_type_node,
module_name_cst);