--- /dev/null
+/* PR rtl-optimization/pr63527 */
+/* { dg-do compile { target { ia32 && fpic } } } */
+/* { dg-options "-O2 -fPIC" } */
+
+struct cache_file
+{
+ char magic[sizeof "ld.so-1.7.0" - 1];
+ unsigned int nlibs;
+};
+typedef unsigned int size_t;
+size_t cachesize __attribute__ ((visibility ("hidden")));
+struct cache_file *cache __attribute__ ((visibility ("hidden")));
+extern int __munmap (void *__addr, size_t __len);
+void
+_dl_unload_cache (void)
+{
+ if (cache != ((void *)0) && cache != (struct cache_file *) -1)
+ {
+ __munmap (cache, cachesize);
+ cache = ((void *)0) ;
+ }
+}
+
+/* We shouldn't load EBX again. */
+/* { dg-final { scan-assembler-not "movl\[ \t\]%\[^,\]+, %ebx" } } */