aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYury Gribov <y.gribov@samsung.com>2013-11-07 12:04:45 +0000
committerYury Gribov <ygribov@gcc.gnu.org>2013-11-07 12:04:45 +0000
commit77e83307fe660b6139643b8f59e33af6e6eab78a (patch)
tree7ec964dd23728fc9025e02aa3e22efd7c4fc6eaf /gcc
parentacf67b8e7c649d35547d627cbc1a275f11d35fa7 (diff)
downloadgcc-77e83307fe660b6139643b8f59e33af6e6eab78a.zip
gcc-77e83307fe660b6139643b8f59e33af6e6eab78a.tar.gz
gcc-77e83307fe660b6139643b8f59e33af6e6eab78a.tar.bz2
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 <jakub@redhat.com> From-SVN: r204508
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/asan.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/c-c++-common/asan/pr59029.c7
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 77f1b32..6a399a4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2013-11-07 Yury Gribov <y.gribov@samsung.com>
+ Jakub Jelinek <jakub@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 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.c (aarch64_legitimize_reload_address):
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.gribov@samsung.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/59029
+ * c-c++-common/asan/pr59029.c: New test.
+
2013-11-07 H.J. Lu <hongjiu.lu@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);
+}