The compiler is too damn smart.
Change-Id: Ibef3ef41ec99f8cd9c06f1dbca535819f9a08197
__BIONIC_FORTIFY_INLINE
size_t test_fortify_inline(char* buf) {
- return __bos(buf);
+ return __bos(buf);
}
TEST(Fortify1_Clang, fortify_inline) {
char buf[1024];
- ASSERT_EQ(test_fortify_inline(buf), sizeof(buf));
+ // no-op. Prints nothing. Needed to prevent the compiler
+ // from optimizing out buf.
+ buf[0] = '\0';
+ printf("%s", buf);
+ ASSERT_EQ(sizeof(buf), test_fortify_inline(buf));
}
__BIONIC_FORTIFY_INLINE
size_t test_fortify2_inline(char* buf) {
- return __bos(buf);
+ return __bos(buf);
}
TEST(Fortify2_Clang, fortify_inline) {
char buf[1024];
- ASSERT_EQ(test_fortify2_inline(buf), sizeof(buf));
+ // no-op. Prints nothing. Needed to prevent the compiler
+ // from optimizing out buf.
+ buf[0] = '\0';
+ printf("%s", buf);
+ ASSERT_EQ(sizeof(buf), test_fortify2_inline(buf));
}