Index: kernel/generic/include/lib/memfnc.h
===================================================================
--- kernel/generic/include/lib/memfnc.h	(revision 797d4d193fb13a383f79845727e8ac92d9d83ae6)
+++ kernel/generic/include/lib/memfnc.h	(revision 84b89095682304c2b8b70840e9e37e29cec9971e)
@@ -39,8 +39,14 @@
 #include <cc.h>
 
+#ifdef CONFIG_LTO
+#define DO_NOT_DISCARD ATTRIBUTE_USED
+#else
+#define DO_NOT_DISCARD
+#endif
+
 extern void *memset(void *, int, size_t)
-    ATTRIBUTE_OPTIMIZE("-fno-tree-loop-distribute-patterns");
+    ATTRIBUTE_OPTIMIZE("-fno-tree-loop-distribute-patterns") DO_NOT_DISCARD;
 extern void *memcpy(void *, const void *, size_t)
-    ATTRIBUTE_OPTIMIZE("-fno-tree-loop-distribute-patterns");
+    ATTRIBUTE_OPTIMIZE("-fno-tree-loop-distribute-patterns") DO_NOT_DISCARD;
 
 #endif
