[PATCH 0/3] Add __ioread32_copy() and use it
From: akpm@linux-foundation.org (Andrew Morton)
Date: 2015-09-18 19:19:22
Also in:
linux-arm-msm, linux-mips, lkml
From: akpm@linux-foundation.org (Andrew Morton)
Date: 2015-09-18 19:19:22
Also in:
linux-arm-msm, linux-mips, lkml
On Wed, 16 Sep 2015 04:55:46 +0200 Andi Kleen [off-list ref] wrote:
quoted
Under what circumstances will the compiler (or linker?) do this?Compiler.quoted
LTO enabled?Yes it's for LTO. The optimization allows the compiler to drop unused functions, which is very popular with users (a lot use it to get smaller kernel images)
Does this look truthful and complete?
--- a/include/linux/compiler-gcc.h~a
+++ a/include/linux/compiler-gcc.h@@ -205,7 +205,10 @@ #if GCC_VERSION >= 40600 /* - * Tell the optimizer that something else uses this function or variable. + * When used with Link Time Optimization, gcc can optimize away C functions or + * variables which are referenced only from assembly code. __visible tells the + * optimizer that something else uses this function or variable, thus preventing + * this. */ #define __visible __attribute__((externally_visible)) #endif
_