bjope added inline comments.

================
Comment at: clang/lib/Sema/SemaCast.cpp:2660
     return;
+  if (SrcType->isIntegerType() && DestType->isFixedPointType())
+    return;
----------------
vabridgers wrote:
> bjope wrote:
> > Is this really the intention with the patch?
> > 
> > It does match the "summary" above, but isn't the warning well deserved for 
> > int->fixed cast.
> > 
> > I also base that question on the you referred to this patch from our 
> > bugtracker at Ericsson, which was about conversions from `long __fixed` to 
> > `long __fixed`. So I kind of expected to find `(SrcType->isFixedPointType() 
> > && DestType->isFixedPointType())` here (similar to the checks above that 
> > avoids warning when SrcType equals the DestType).
> > 
> > The test case I expected (related to our downstream bug report) would look 
> > like this:
> > 
> > ```
> > _Fract ff1(void);
> > 
> > void
> > foo(void)
> > {
> >   (_Fract)ff1();  // No warning expected.
> > }
> > ```
> > 
> I improve the commit message detail. Please read and let me know if the 
> intent is still not clear. 
I'm afraid you didn't update the summary in phabricator? (I've never managed to 
do that using arcanist myself, after having updated the commit msg locally I 
usually need to update the description in phabricator using the web ui).


================
Comment at: clang/lib/Sema/SemaCast.cpp:2660
     return;
+  if (SrcType->isIntegerType() && DestType->isFixedPointType())
+    return;
----------------
bjope wrote:
> vabridgers wrote:
> > bjope wrote:
> > > Is this really the intention with the patch?
> > > 
> > > It does match the "summary" above, but isn't the warning well deserved 
> > > for int->fixed cast.
> > > 
> > > I also base that question on the you referred to this patch from our 
> > > bugtracker at Ericsson, which was about conversions from `long __fixed` 
> > > to `long __fixed`. So I kind of expected to find 
> > > `(SrcType->isFixedPointType() && DestType->isFixedPointType())` here 
> > > (similar to the checks above that avoids warning when SrcType equals the 
> > > DestType).
> > > 
> > > The test case I expected (related to our downstream bug report) would 
> > > look like this:
> > > 
> > > ```
> > > _Fract ff1(void);
> > > 
> > > void
> > > foo(void)
> > > {
> > >   (_Fract)ff1();  // No warning expected.
> > > }
> > > ```
> > > 
> > I improve the commit message detail. Please read and let me know if the 
> > intent is still not clear. 
> I'm afraid you didn't update the summary in phabricator? (I've never managed 
> to do that using arcanist myself, after having updated the commit msg locally 
> I usually need to update the description in phabricator using the web ui).
> Is this really the intention with the patch?
> 
> It does match the "summary" above, but isn't the warning well deserved for 
> int->fixed cast.
> 
> I also base that question on the you referred to this patch from our 
> bugtracker at Ericsson, which was about conversions from `long __fixed` to 
> `long __fixed`. So I kind of expected to find `(SrcType->isFixedPointType() 
> && DestType->isFixedPointType())` here (similar to the checks above that 
> avoids warning when SrcType equals the DestType).
> 
> The test case I expected (related to our downstream bug report) would look 
> like this:
> 
> ```
> _Fract ff1(void);
> 
> void
> foo(void)
> {
>   (_Fract)ff1();  // No warning expected.
> }
> ```
> 




================
Comment at: clang/lib/Sema/SemaCast.cpp:2660
     return;
+  if (SrcType->isIntegerType() && DestType->isFixedPointType())
+    return;
----------------
bjope wrote:
> bjope wrote:
> > vabridgers wrote:
> > > bjope wrote:
> > > > Is this really the intention with the patch?
> > > > 
> > > > It does match the "summary" above, but isn't the warning well deserved 
> > > > for int->fixed cast.
> > > > 
> > > > I also base that question on the you referred to this patch from our 
> > > > bugtracker at Ericsson, which was about conversions from `long __fixed` 
> > > > to `long __fixed`. So I kind of expected to find 
> > > > `(SrcType->isFixedPointType() && DestType->isFixedPointType())` here 
> > > > (similar to the checks above that avoids warning when SrcType equals 
> > > > the DestType).
> > > > 
> > > > The test case I expected (related to our downstream bug report) would 
> > > > look like this:
> > > > 
> > > > ```
> > > > _Fract ff1(void);
> > > > 
> > > > void
> > > > foo(void)
> > > > {
> > > >   (_Fract)ff1();  // No warning expected.
> > > > }
> > > > ```
> > > > 
> > > I improve the commit message detail. Please read and let me know if the 
> > > intent is still not clear. 
> > I'm afraid you didn't update the summary in phabricator? (I've never 
> > managed to do that using arcanist myself, after having updated the commit 
> > msg locally I usually need to update the description in phabricator using 
> > the web ui).
> > Is this really the intention with the patch?
> > 
> > It does match the "summary" above, but isn't the warning well deserved for 
> > int->fixed cast.
> > 
> > I also base that question on the you referred to this patch from our 
> > bugtracker at Ericsson, which was about conversions from `long __fixed` to 
> > `long __fixed`. So I kind of expected to find `(SrcType->isFixedPointType() 
> > && DestType->isFixedPointType())` here (similar to the checks above that 
> > avoids warning when SrcType equals the DestType).
> > 
> > The test case I expected (related to our downstream bug report) would look 
> > like this:
> > 
> > ```
> > _Fract ff1(void);
> > 
> > void
> > foo(void)
> > {
> >   (_Fract)ff1();  // No warning expected.
> > }
> > ```
> > 
> 
> 
> Is this really the intention with the patch?
> 
> It does match the "summary" above, but isn't the warning well deserved for 
> int->fixed cast.
> 
> I also base that question on the you referred to this patch from our 
> bugtracker at Ericsson, which was about conversions from `long __fixed` to 
> `long __fixed`. So I kind of expected to find `(SrcType->isFixedPointType() 
> && DestType->isFixedPointType())` here (similar to the checks above that 
> avoids warning when SrcType equals the DestType).
> 
> The test case I expected (related to our downstream bug report) would look 
> like this:
> 
> ```
> _Fract ff1(void);
> 
> void
> foo(void)
> {
>   (_Fract)ff1();  // No warning expected.
> }
> ```
> 




================
Comment at: clang/test/Sema/warn-bad-function-cast.c:49
+#ifdef FIXED_POINT
+  (void)(_Fract) if1(); // no warning
+#endif
----------------
vabridgers wrote:
> bjope wrote:
> > bjope wrote:
> > > bjope wrote:
> > > > This should be added before the line saying `/* All following casts 
> > > > issue warning */`.
> > > Is the `(void)` needed/relevant here?
> > As questioned earlier, shouldn't we expect a warning for this scenario?
> > 
> > There is however a problem that we get the warning for _Fract to _Fract 
> > conversion. And it would be nice with a more complete set of tests 
> > involving both FixedPoint->FixedPoint, FixedPoint->Integer and 
> > Integer->FixedPoint casts.
> If you have any *specific* suggestions for test cases, I'm open to that.
Add:

```
_Fract ff1(void);
```

And inside foo add these three tests (you'll need to add appropriate expects):
```
(_Fract)ff1();  // No warning expected.
(_Fract)if1();  // Warning expected.
(int)ff1();  // Warning expected.
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85157/new/

https://reviews.llvm.org/D85157

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to