alloc.c (mark_memory): Guard the "no_address_safety_analysis" function
authorJohn Wiegley <johnw@newartisans.com>
Wed, 11 Jul 2012 06:14:27 +0000 (01:14 -0500)
committerJohn Wiegley <johnw@newartisans.com>
Wed, 11 Jul 2012 06:14:27 +0000 (01:14 -0500)
attribute, so we only use it if it exists in the compiler.

src/ChangeLog
src/alloc.c

index 8a6dc86..64a7989 100644 (file)
@@ -1,3 +1,9 @@
+2012-07-11  John Wiegley  <johnw@newartisans.com>
+
+       * alloc.c (mark_memory): Guard the "no_address_safety_analysis"
+       function attribute, so we only use it if it exists in the
+       compiler.
+
 2012-07-11  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Avoid call to strlen in fast_c_string_match_ignore_case.
index 89f2c5d..ac20025 100644 (file)
@@ -4641,12 +4641,14 @@ mark_maybe_pointer (void *p)
 
 static void
 mark_memory (void *start, void *end)
-#ifdef __clang__
+#if defined (__clang__) && defined (__has_feature)
+#if __has_feature(address_sanitizer)
   /* Do not allow -faddress-sanitizer to check this function, since it
      crosses the function stack boundary, and thus would yield many
      false positives. */
   __attribute__((no_address_safety_analysis))
 #endif
+#endif
 {
   void **pp;
   int i;