[PATCH] D149154: [clang][Interp] Emit diagnostic when comparing function pointers
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 26 04:42:44 PDT 2023
aaron.ballman added inline comments.
================
Comment at: clang/lib/AST/Interp/Interp.h:652-653
+ const SourceInfo &Loc = S.Current->getSource(OpPC);
+ S.FFDiag(Loc, diag::note_constexpr_pointer_comparison_unspecified)
+ << LS << RS;
+ return false;
----------------
tbaeder wrote:
> aaron.ballman wrote:
> > tbaeder wrote:
> > > aaron.ballman wrote:
> > > > Can we pass in the result of `getType()` instead of doing this string conversion dance?
> > > 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.
> > Ah of course, good point. And yeah, a helper function for this would probably not be a bad idea.
> Do you like the `toDiagnosticString()` from https://reviews.llvm.org/D149172 better?
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.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D149154/new/
https://reviews.llvm.org/D149154
More information about the cfe-commits
mailing list