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.
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;
}
If you're actually not accessing any global state at all (including making no memory allocation), shouldn't the compiler figure that out anyway? That doesn't seem like something that would be very hard to check for.