extend.texi (__clear_cache): Correct signature.
authorMartin Sebor <msebor@redhat.com>
Thu, 21 Feb 2019 23:23:12 +0000 (23:23 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Thu, 21 Feb 2019 23:23:12 +0000 (16:23 -0700)
gcc/ChangeLog:

* doc/extend.texi (__clear_cache): Correct signature.

libgcc/ChangeLog:

* libgcc2.h (__clear_cache): Correct signature.
* libgcc2.c (__clear_cache): Same.

gcc/testsuite/ChangeLog:

* gcc.dg/Wbuiltin-declaration-mismatch-12.c: New test.

From-SVN: r269082

gcc/ChangeLog
gcc/doc/extend.texi
libgcc/ChangeLog
libgcc/libgcc2.c
libgcc/libgcc2.h

index 46cc048e7eb0e89cbfde222c0aaf3cf99f80d42a..c8cecb35de073380d5995cfad1cbcbbbc1166da9 100644 (file)
@@ -1,3 +1,7 @@
+2019-02-21  Martin Sebor  <msebor@redhat.com>
+
+       * doc/extend.texi (__clear_cache): Correct signature.
+
 2019-02-21  Ian Lance Taylor  <iant@golang.org>
 
        PR go/89170
index e7af5a6aa53a88924c6a157973d41ae6aa68247f..545d8510f9df9d4b2ba729cf646633fbfde63720 100644 (file)
@@ -13073,7 +13073,7 @@ void foo (void)
 
 @end deftypefn
 
-@deftypefn {Built-in Function} void __builtin___clear_cache (char *@var{begin}, char *@var{end})
+@deftypefn {Built-in Function} void __builtin___clear_cache (void *@var{begin}, void *@var{end})
 This function is used to flush the processor's instruction cache for
 the region of memory between @var{begin} inclusive and @var{end}
 exclusive.  Some targets require that the instruction cache be
index 1ada0793546254d884859a11777a5a5b2eacf33f..950eeabb0613f475c379c99423d0f44a4a2d1094 100644 (file)
@@ -1,3 +1,8 @@
+2019-02-21  Martin Sebor  <msebor@redhat.com>
+
+       * libgcc2.h (__clear_cache): Correct signature.
+       * libgcc2.c (__clear_cache): Same.
+
 2019-02-20  Uroš Bizjak  <ubizjak@gmail.com>
 
        * config/alpha/linux-unwind.h (alpha_fallback_frame_state):
index 04d3185e8050977cf4e99c6dddc56579d2c96681..763b5fabd512d4efd3ca007d9a96d8778a5de422 100644 (file)
@@ -2162,11 +2162,14 @@ __eprintf (const char *string, const char *expression,
 /* Clear part of an instruction cache.  */
 
 void
-__clear_cache (char *beg __attribute__((__unused__)),
-              char *end __attribute__((__unused__)))
+__clear_cache (void *beg __attribute__((__unused__)),
+              void *end __attribute__((__unused__)))
 {
 #ifdef CLEAR_INSN_CACHE
-  CLEAR_INSN_CACHE (beg, end);
+  /* Cast the void* pointers to char* as some implementations
+     of the macro assume the pointers can be subtracted from
+     one another.  */
+  CLEAR_INSN_CACHE ((char *) beg, (char *) end);
 #endif /* CLEAR_INSN_CACHE */
 }
 
index c9ce2d3b4c7a38d3ab95f883ff3762994e39dafe..d7988f1dd78c0da8eec79aaf678b8102fcb46843 100644 (file)
@@ -30,7 +30,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #endif
 
 extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
-extern void __clear_cache (char *, char *);
+extern void __clear_cache (void *, void *);
 extern void __eprintf (const char *, const char *, unsigned int, const char *)
   __attribute__ ((__noreturn__));