aaron.ballman added inline comments.
================ Comment at: clang/test/AST/Interp/literals.cpp:875 1 ? 0 : 1; + sizeof(A); + alignof(A); ---------------- tbaeder wrote: > aaron.ballman wrote: > > Let's make sure we still reject this: > > ``` > > constexpr int oh_my() { > > int x = 0; > > sizeof(int[x++]); // This would usually be evaluated because VLAs are > > terrible > > return x; > > } > > ``` > > https://godbolt.org/z/E3jx6co46 > Hm, no, doesn't get rejected: > ``` > array.cpp:1240:3: warning: expression result unused [-Wunused-value] > 1240 | sizeof(int[x++]); // This would usually be evaluated because VLAs > are terrible > | ^~~~~~~~~~~~~~~~ > array.cpp:1243:15: error: static assertion failed due to requirement 'oh_my() > == 1' > 1243 | static_assert(oh_my() == 1); > | ^~~~~~~~~~~~ > array.cpp:1243:23: note: expression evaluates to '0 == 1' > 1243 | static_assert(oh_my() == 1); > | ~~~~~~~~^~~~ > ``` It looks to me like we're not modelling the side effects properly (we would return `1` if we were, so the `static_assert` would have passed), which might explain why we're failing to reject the code. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D149834/new/ https://reviews.llvm.org/D149834 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits