skan marked an inline comment as done. skan added inline comments.
================ Comment at: clang/lib/Headers/ia32intrin.h:421 + if (__c != 0) { \ + *(a) = (unsigned)__bsfd(__c); \ + __d = 1; \ ---------------- craig.topper wrote: > skan wrote: > > craig.topper wrote: > > > Should (a) have a cast to (unsigned *)? > > No. Using a cast here may cause pointer aliasing problem. > > > > https://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-rule > > > > If a is not `unsigned *`, letting the compiler do auto integer conversion > > for `*(a)` is the correct way, from my perspective. > But if we implemented this as an inline function instead of a macro wouldn't > the argument have been an unsigned *? Yes, it would have been. But I don't known the motivation to use a cast `(unsigned *)` here, is there any case using cast here works correctly while not using cast here fails? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75723/new/ https://reviews.llvm.org/D75723 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits