[PATCH] D124571: Avoid strict aliasing violation on type punning inside llvm::PointerIntPair
    Eli Friedman via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Tue May  3 12:27:12 PDT 2022
    
    
  
efriedma added a comment.
> This is a reduced version of the issue: https://godbolt.org/z/zor6MhPT6
>  I was wrong. This only miscompiles only on clang 11, 12 and 13. It works fine on clang <v10 and on clang 14.
That looks like a globalopt bug.  I remember there was a patch in LLVM 14 related to this; I don't think it's something you can reasonably work around.
--------
I think strictly speaking, to avoid UB you might need to declare "Data" as a union: otherwise, the compiler might assume the value it contains is aligned.  I don't think clang does, in practice, but probably you want to be conservative.
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124571/new/
https://reviews.llvm.org/D124571
    
    
More information about the llvm-commits
mailing list