Function pointers can be compared for (in)equality but, but LE, GE, LT, and GT opcodes should emit an error and abort.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang/lib/AST/Interp/Interp.h | ||
---|---|---|
589–590 | Can we pass in the result of getType() instead of doing this string conversion dance? |
clang/lib/AST/Interp/Interp.h | ||
---|---|---|
589–590 | Well the diagnostic doesn't print the result of the LHS/RHS: ./array.cpp:202:18: error: constexpr variable 'u13' must be initialized by a constant expression 202 | constexpr bool u13 = pf < pg; // ref-warning {{ordered comparison of function pointers}} | ^ ~~~~~~~ ./array.cpp:202:27: note: comparison between '&f' and '&g' has unspecified value 202 | constexpr bool u13 = pf < pg; // ref-warning {{ordered comparison of function pointers}} | ^ I'm not exactly a fan of how the code looks though. I might add a helper function for this later. |
LGTM
clang/lib/AST/Interp/Interp.h | ||
---|---|---|
589–590 | Ah of course, good point. And yeah, a helper function for this would probably not be a bad idea. |
clang/lib/AST/Interp/Interp.h | ||
---|---|---|
589–590 | Do you like the toDiagnosticString() from https://reviews.llvm.org/D149172 better? |
clang/lib/AST/Interp/Interp.h | ||
---|---|---|
589–590 | I do, that's a nice helper. Feel free to either land those changes and use the function here, or land these changes and do a later NFC commit to the helper method. |
Can we pass in the result of getType() instead of doing this string conversion dance?