re PR sanitizer/55508 (many test cases fail using -fsanitize=address with internal...
authorJakub Jelinek <jakub@redhat.com>
Wed, 12 Dec 2012 23:05:23 +0000 (00:05 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 12 Dec 2012 23:05:23 +0000 (00:05 +0100)
PR sanitizer/55508
* builtin-attrs.def (ATTR_TMPURE_NOTHROW_LEAF_LIST,
ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST): New.
* asan.c (ATTR_TMPURE_NOTHROW_LEAF_LIST,
ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST): Define.
* sanitizer.def: Make __asan_report_* and __asan_handle_no_return
builtins tm pure.

From-SVN: r194459

gcc/ChangeLog
gcc/asan.c
gcc/builtin-attrs.def
gcc/sanitizer.def

index 48aae88c24835b5a302c3166f0378fed8f46e68e..5d5dbe0b321d9de360ca10c16e330fdffc2e7f30 100644 (file)
@@ -1,3 +1,13 @@
+2012-12-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/55508
+       * builtin-attrs.def (ATTR_TMPURE_NOTHROW_LEAF_LIST,
+       ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST): New.
+       * asan.c (ATTR_TMPURE_NOTHROW_LEAF_LIST,
+       ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST): Define.
+       * sanitizer.def: Make __asan_report_* and __asan_handle_no_return
+       builtins tm pure.
+
 2012-12-12  Steve Ellcey  <sellcey@mips.com>
 
        * config/mips/mips.c (mips_option_override): Set
index 45b0dbd2392a2e3014bbb6900c09ae7f27b75504..40af45dd0bbc5d4825453136ab9f021f2a21e336 100644 (file)
@@ -1611,8 +1611,13 @@ initialize_sanitizer_builtins (void)
 #define BT_FN_VOID_VPTR_I16_INT BT_FN_VOID_VPTR_IX_INT[4]
 #undef ATTR_NOTHROW_LEAF_LIST
 #define ATTR_NOTHROW_LEAF_LIST ECF_NOTHROW | ECF_LEAF
+#undef ATTR_TMPURE_NOTHROW_LEAF_LIST
+#define ATTR_TMPURE_NOTHROW_LEAF_LIST ECF_TM_PURE | ATTR_NOTHROW_LEAF_LIST
 #undef ATTR_NORETURN_NOTHROW_LEAF_LIST
 #define ATTR_NORETURN_NOTHROW_LEAF_LIST ECF_NORETURN | ATTR_NOTHROW_LEAF_LIST
+#undef ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST
+#define ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST \
+  ECF_TM_PURE | ATTR_NORETURN_NOTHROW_LEAF_LIST
 #undef DEF_SANITIZER_BUILTIN
 #define DEF_SANITIZER_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
   decl = add_builtin_function ("__builtin_" NAME, TYPE, ENUM,          \
index 545b6fd5414a579ec644c2e814c697bd057ff024..364e7217b15f818812bd456f95399ddf69d79359 100644 (file)
@@ -263,6 +263,11 @@ DEF_ATTR_TREE_LIST (ATTR_TMPURE_MALLOC_NOTHROW_LIST,
 DEF_ATTR_TREE_LIST (ATTR_TMPURE_NOTHROW_LIST,
                   ATTR_TM_TMPURE, ATTR_NULL, ATTR_NOTHROW_LIST)
 
+DEF_ATTR_TREE_LIST (ATTR_TMPURE_NOTHROW_LEAF_LIST,
+                   ATTR_TM_TMPURE, ATTR_NULL, ATTR_NOTHROW_LEAF_LIST)
+DEF_ATTR_TREE_LIST (ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST,
+                   ATTR_TM_TMPURE, ATTR_NULL, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+
 /* Construct a tree for a format_arg attribute.  */
 #define DEF_FORMAT_ARG_ATTRIBUTE(FA)                                   \
   DEF_ATTR_TREE_LIST (ATTR_FORMAT_ARG_##FA, ATTR_FORMAT_ARG,           \
index fee8f13ab4fbb1bc0ebc5c8e7d4616a88f6ecd08..987e212363d18f6c6b89fc7d8f9c5ccdcd7e16a5 100644 (file)
@@ -32,25 +32,25 @@ DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_INIT, "__asan_init",
 /* Do not reorder the BUILT_IN_ASAN_REPORT* builtins, e.g. cfgcleanup.c
    relies on this order.  */
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD1, "__asan_report_load1",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD2, "__asan_report_load2",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD4, "__asan_report_load4",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD8, "__asan_report_load8",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD16, "__asan_report_load16",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE1, "__asan_report_store1",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE2, "__asan_report_store2",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE4, "__asan_report_store4",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE8, "__asan_report_store8",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE16, "__asan_report_store16",
-                     BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REGISTER_GLOBALS,
                      "__asan_register_globals",
                      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
@@ -59,7 +59,7 @@ DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_UNREGISTER_GLOBALS,
                      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
 DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_HANDLE_NO_RETURN,
                      "__asan_handle_no_return",
-                     BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
+                     BT_FN_VOID, ATTR_TMPURE_NOTHROW_LEAF_LIST)
 
 /* Thread Sanitizer */
 DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_INIT, "__tsan_init",