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?