Re:Why Const Doesn't Make C Code Faster
by gpderetta on Tuesday August 20, 2019 @05:59AM
(#20745207)
Not if it is defined in another translation unit and you are not using LTO.
[ Parent
| on HN ]
Re:Why Const Doesn't Make C Code Faster
by fluffything on Tuesday August 20, 2019 @07:46AM
(#20745783)
In other words, the compiler can infer this from the function definition (or at least clang does), but it cannot infer this from a function declaration, because the implementation is missing - unless you are using LTO like the parent mentions.
sometimes it cannot infer it even from function, for example, here is a function that in my particular OS gets me a pointer to my library's globals. To my code the returned pointer never changes, but the compiler has NO way to tell this function is const without my annotation
void* __attribute__((const)) getGlobals(void) {
void* ret;
asm (
" ldr %0, [r9] \n"
" ldr %0, [%0, %1] \n"
: "=r"(ret)
: "I"(MY_MODULE_ID)
:
);
return ret;
}