[PATCH] D146987: [Assignment Tracking] Enable by default
Jeremy Morse via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 21 05:27:57 PDT 2023
jmorse added a comment.
/me grumbles about all the world being a VAX,
@mstorsjo I can't replicate the crash, but can replicate the valgrind jump-on-uninitialized-value with a small reproducer [0] that doesn't feature any debug-info, using `opt --passes=early-cse reduced.ll`. The trace I've reduced around:
==609193== Conditional jump or move depends on uninitialised value(s)
==609193== at 0x5653F8B: simplifyICmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, unsigned int) (in /fast/fs/llvm-main/build/bin/opt)
==609193== by 0x5654F22: simplifyICmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, unsigned int) (in /fast/fs/llvm-main/build/bin/opt)
==609193== by 0x566107B: simplifyInstructionWithOperands(llvm::Instruction*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&, unsigned int) (in /fast/fs/llvm-main/build/bin/opt)
==609193== by 0x566181E: llvm::simplifyInstruction(llvm::Instruction*, llvm::SimplifyQuery const&) (in /fast/fs/llvm-main/build/bin/opt)
I've been building rG61967bbc7d4e9 <https://reviews.llvm.org/rG61967bbc7d4e9f72fb1fa082fa2235b99e36b698> using ubuntu's packaged clang-9. I can't be completely certain, but seemingly a user of PatternMatch::BinaryOp_match doesn't check that the pattern matched before examining the pattern? It doesn't reproduce in a stage2 RelWithDebInfo build, which is highly suspicious and feels like it's my environment. Could you confirm it's definitely assignment-tracking at fault by using `-Xclang -fexperimental-assignment-tracking=forced` to enable and `-Xclang -fexperimental-assignment-tracking=disabled` to disable, which should control the behaviour if it's AT at fault.
@dmgreen Aaahh, yes, we hadn't considered SVE at all. I think there's a natural solution, which is to treat such stores as indicating a variable is memory-homed at that point, although determining the size could be troublesome. I'll leave that to @Orlando .
@srj I'm unable to reproduce that assertion on linux with rG61967bbc7d4e9 <https://reviews.llvm.org/rG61967bbc7d4e9f72fb1fa082fa2235b99e36b698>, however it looks like that assertion doesn't expect to have two identical objects compared with each other. Some light googling suggests that it's permissible for std::sort to do that, and some people complain about it, so I suppose in some environments that assertion is ill formed. We should be able to fix that with a small refinement.
Many thanks for reporting the problems all.
[0] https://gist.github.com/jmorse/55da51f56d9c756fa77b42e705bdc674
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146987/new/
https://reviews.llvm.org/D146987
More information about the cfe-commits
mailing list