Why doesn't g++ optimize local constexpr array access?
1
I have following c++ code: inline int choose(int i){ static constexpr int arr={1,3,3,2,4,1,4}; return arr[i]; } void f(int); int main(){ for(int i=0;i<5;i++){ f(choose(i)); } } When I compile this with g++ 8.2 with option -O3, it produces well-optimized asm code. However, when I change the second line from static constexpr to constexpr , which should be semantically the same, it no longer optimizes array access, and produces somewhat inefficient asm code. Does anyone have any idea why this happens?
c++ g++ compiler-optimization
share | improve this question
asked Nov 26 '18 at 13:45
...