[Bug sanitizer/55309] gcc's address-sanitizer 66% slower than clang's

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Feb 12 11:42:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55309

--- Comment #39 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-02-12 11:42:33 UTC ---
So, if Darwin keeps the old 1ULL << 44, then the corresponding gcc change (to
be applied together with asan merge) would be something like (untested):
--- gcc/sanitizer.def    2013-01-11 09:02:37.879637130 +0100
+++ gcc/sanitizer.def    2013-02-12 12:39:12.743272092 +0100
@@ -27,7 +27,7 @@ along with GCC; see the file COPYING3.
    for other FEs by asan.c.  */

 /* Address Sanitizer */
-DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_INIT, "__asan_init",
+DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_INIT, "__asan_init_v1",
               BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
 /* Do not reorder the BUILT_IN_ASAN_REPORT* builtins, e.g. cfgcleanup.c
    relies on this order.  */
--- gcc/config/i386/i386.c    2013-02-12 11:23:35.400193705 +0100
+++ gcc/config/i386/i386.c    2013-02-12 12:38:30.775503155 +0100
@@ -5436,7 +5436,9 @@ ix86_legitimate_combined_insn (rtx insn)
 static unsigned HOST_WIDE_INT
 ix86_asan_shadow_offset (void)
 {
-  return (unsigned HOST_WIDE_INT) 1 << (TARGET_LP64 ? 44 : 29);
+  return TARGET_LP64 ? (TARGET_MACHO ? (HOST_WIDE_INT_1 << 44)
+                     : HOST_WIDE_INT_C (0x7fff8000))
+             : (HOST_WIDE_INT_1 << 29);
 }


 /* Argument support functions.  */



More information about the Gcc-bugs mailing list