From: Yury Gribov Date: Thu, 7 Nov 2013 12:04:45 +0000 (+0000) Subject: Allow integer literals as addresses in instrumented builtins. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=77e83307fe660b6139643b8f59e33af6e6eab78a;p=gcc.git Allow integer literals as addresses in instrumented builtins. gcc/ PR sanitizer/59029 * gcc/asan.c (get_mem_refs_of_builtin_call): Allow integer literals as addresses in instrumented builtins. gcc-testsuite/ PR sanitizer/59029 * c-c++-common/asan/pr59029.c: New test. Co-Authored-By: Jakub Jelinek From-SVN: r204508 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77f1b32fdaa..6a399a4dbd6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-11-07 Yury Gribov + Jakub Jelinek + + PR sanitizer/59029 + * gcc/asan.c (get_mem_refs_of_builtin_call): Allow + integer literals as addresses in instrumented builtins. + 2013-11-07 Kyrylo Tkachov * config/aarch64/aarch64.c (aarch64_legitimize_reload_address): diff --git a/gcc/asan.c b/gcc/asan.c index fdca37755a9..950d332c0d5 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -715,7 +715,7 @@ get_mem_refs_of_builtin_call (const gimple call, instrument_derefs. */ if (TREE_CODE (dest) == ADDR_EXPR) dest = TREE_OPERAND (dest, 0); - else if (TREE_CODE (dest) == SSA_NAME) + else if (TREE_CODE (dest) == SSA_NAME || TREE_CODE (dest) == INTEGER_CST) dest = build2 (MEM_REF, TREE_TYPE (TREE_TYPE (dest)), dest, build_int_cst (TREE_TYPE (dest), 0)); else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 56d30a39606..f6e735f9c23 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-11-07 Yury Gribov + Jakub Jelinek + + PR sanitizer/59029 + * c-c++-common/asan/pr59029.c: New test. + 2013-11-07 H.J. Lu PR target/59034 diff --git a/gcc/testsuite/c-c++-common/asan/pr59029.c b/gcc/testsuite/c-c++-common/asan/pr59029.c new file mode 100644 index 00000000000..a1319b2720e --- /dev/null +++ b/gcc/testsuite/c-c++-common/asan/pr59029.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ + +int +foo () +{ + return __sync_fetch_and_add ((int *) 0, 1); +}