Fw: Possible missed optimization opportunity with const?

Kalle Olavi Niemitalo kon@iki.fi
Thu Sep 1 06:14:00 GMT 2016


Toshi Morita <tm314159@yahoo.com> writes:

> what is the correct way to define a pointer to a hardware
> register at 0x1234 which contains immutable data?

It seems "extern const int foo;" with "-Wl,--defsym,foo=0x1234"
almost works, except GCC then uses a RIP-relative reference on
amd64 and that can cause a relocation overflow.

I also tried wrapping the read in an __attribute__((const))
function, which means the return value does not depend on
global memory:

int __attribute__((const)) getfoo() 
{
  return *(const int *) 0x1234;
}

but GCC emitted two reads anyhow.



More information about the Gcc-help mailing list