diff options
author | Martin Liska <mliska@suse.cz> | 2021-08-12 17:49:14 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2021-09-13 15:34:23 +0200 |
commit | 90ac6edc3c0123b6cf975781f70c8517db84bd63 (patch) | |
tree | 05111450bc6698e5bdd8fabbe82e195e2ce77eae /gcc | |
parent | a7f59856ea8ea02d6f09d2e9e793ce2800ebbe4b (diff) | |
download | gcc-90ac6edc3c0123b6cf975781f70c8517db84bd63.zip gcc-90ac6edc3c0123b6cf975781f70c8517db84bd63.tar.gz gcc-90ac6edc3c0123b6cf975781f70c8517db84bd63.tar.bz2 |
c++: fix -fsanitize-coverage=trace-pc ICE [PR101331]
PR c++/101331
gcc/ChangeLog:
* asan.h (sanitize_coverage_p): Handle when fn == NULL.
gcc/testsuite/ChangeLog:
* g++.dg/pr101331.C: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/asan.h | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr101331.C | 7 |
2 files changed, 10 insertions, 2 deletions
@@ -255,8 +255,9 @@ static inline bool sanitize_coverage_p (const_tree fn = current_function_decl) { return (flag_sanitize_coverage - && lookup_attribute ("no_sanitize_coverage", - DECL_ATTRIBUTES (fn)) == NULL_TREE); + && (fn == NULL_TREE + || lookup_attribute ("no_sanitize_coverage", + DECL_ATTRIBUTES (fn)) == NULL_TREE)); } #endif /* TREE_ASAN */ diff --git a/gcc/testsuite/g++.dg/pr101331.C b/gcc/testsuite/g++.dg/pr101331.C new file mode 100644 index 0000000..015aba2 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr101331.C @@ -0,0 +1,7 @@ +// PR c++/101331 +// { dg-do compile } +// { dg-options "-fsanitize-coverage=trace-pc -O2 -std=c++11" } + +int a[2]; +int b = 1; +int c { b && (a[b] = 0) }; |