[all-commits] [llvm/llvm-project] 1e8445: [GVN] Pre-commit tests for byte conversions
Pedro Lobo via All-commits
all-commits at lists.llvm.org
Fri Sep 25 11:58:52 PDT 2026
Branch: refs/heads/users/pedroclobo/gvn-byte-forwarding
Home: https://github.com/llvm/llvm-project
Commit: 1e84455cb1b7ba9386224d5472584e489160944f
https://github.com/llvm/llvm-project/commit/1e84455cb1b7ba9386224d5472584e489160944f
Author: Pedro Lobo <pedro.lobo at tecnico.ulisboa.pt>
Date: 2026-09-25 (Fri, 25 Sep 2026)
Changed paths:
A llvm/test/Transforms/GVN/byte-conversion.ll
Log Message:
-----------
[GVN] Pre-commit tests for byte conversions
Commit: 7901255b2f1907fb24873bdf25901a4851c9ff60
https://github.com/llvm/llvm-project/commit/7901255b2f1907fb24873bdf25901a4851c9ff60
Author: Pedro Lobo <pedro.lobo at tecnico.ulisboa.pt>
Date: 2026-09-25 (Fri, 25 Sep 2026)
Changed paths:
M llvm/lib/Transforms/Utils/VNCoercion.cpp
M llvm/test/Transforms/GVN/byte-conversion.ll
Log Message:
-----------
[GVN] Don't coerce forwarded byte values through integers
When GVN forwards a store to a load of a different type, it goes through an
integer. It casts the stored value to `iN`, then shifts and truncates it. For
byte values that cast is wrong. It drops pointer provenance, and a single
poison bit makes the whole result poison.
Byte stores, and pointer stores that feed byte loads, no longer go through an
integer. GVN bitcasts the stored value to `bN` and takes the loaded bits with
`bitextract`, which returns the load type directly. Vector loads get a final
bitcast. Byte vector stores take the same path.
Compare: https://github.com/llvm/llvm-project/compare/53afbe1999b9...7901255b2f19
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list