[all-commits] [llvm/llvm-project] 7ecad2: [InstSimplify] Don't fold gep p, -p to null
Nikita Popov via All-commits
all-commits at lists.llvm.org
Tue Jan 12 11:25:02 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 7ecad2e4ced180b4fdebc6b7bf6d26d83b454318
https://github.com/llvm/llvm-project/commit/7ecad2e4ced180b4fdebc6b7bf6d26d83b454318
Author: Nikita Popov <nikita.ppv at gmail.com>
Date: 2021-01-12 (Tue, 12 Jan 2021)
Changed paths:
M llvm/lib/Analysis/InstructionSimplify.cpp
M llvm/test/Transforms/InstSimplify/gep.ll
Log Message:
-----------
[InstSimplify] Don't fold gep p, -p to null
This is a partial fix for https://bugs.llvm.org/show_bug.cgi?id=44403.
Folding gep p, q-p to q is only legal if p and q have the same
provenance. This fold should probably be guarded by something like
getUnderlyingObject(p) == getUnderlyingObject(q).
This patch is a partial fix that removes the special handling for
gep p, 0-p, which will fold to a null pointer, which would certainly
not pass an underlying object check (unless p is also null, in which
case this would fold trivially anyway). Folding to a null pointer
is particularly problematic due to the special handling it receives
in many places, making end-to-end miscompiles more likely.
Differential Revision: https://reviews.llvm.org/D93820
More information about the All-commits
mailing list