Preapproved by Jakub in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59029
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4991a3a..535b670 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-11-07 Yury Gribov <y.gri...@samsung.com> + Jakub Jelinek <ja...@redhat.com> + + PR sanitizer/59029 + * gcc/asan.c (get_mem_refs_of_builtin_call): Allow + integer literals as addresses in instrumented builtins. + 2013-11-07 H.J. Lu <hongjiu...@intel.com> PR target/59034 diff --git a/gcc/asan.c b/gcc/asan.c index fdca377..950d332 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 56d30a3..f6e735f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-11-07 Yury Gribov <y.gri...@samsung.com> + Jakub Jelinek <ja...@redhat.com> + + PR sanitizer/59029 + * c-c++-common/asan/pr59029.c: New test. + 2013-11-07 H.J. Lu <hongjiu...@intel.com> 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 0000000..a1319b2 --- /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); +}