1. Revert 57dd4b0 "[ValueTracking] Allow context-sensitive nullness check (details)
Commit 6ea47759008526dc11f5064b266de95c61915581 by hans
Revert 57dd4b0 "[ValueTracking] Allow context-sensitive nullness check
for non-pointers"
This caused miscompiles of Chromium ( The
reduced repro is small enough to fit here:
  $ cat /tmp/a.c
unsigned char f(unsigned char *p) {
   unsigned char result = 0;
   for (int shift = 0; shift < 1; ++shift)
     result |= p[0] << (shift * 8);
   return result;
$ bin/clang -O2 -S -o - /tmp/a.c | grep -A4 f:
f:                                      # @f
# %bb.0:                                # %entry
         xorl    %eax, %eax
That's nicely optimized, but I don't think it's the right result :-)
> Same as D60846 but with a fix for the problem encountered there which
> was a missing context adjustment in the handling of PHI nodes.
> The test that caused D60846 to be reverted was added in e15ab8f277c7.
> Reviewers: nikic, nlopes, mkazantsev,spatel, dlrobertson, uabelho,
> Subscribers: hiraditya, bollu, llvm-commits
> Tags: #llvm
> Differential Revision:
This reverts commit 57dd4b03e4806bbb4760ab6150940150d884df20.
The file was modifiedllvm/lib/Analysis/ValueTracking.cpp
The file was modifiedllvm/test/Transforms/InstCombine/known-non-zero.ll
The file was modifiedllvm/test/Transforms/LICM/hoist-mustexec.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/nonnull.ll
The file was modifiedllvm/lib/Analysis/InstructionSimplify.cpp
The file was modifiedllvm/test/Transforms/InstSimplify/known-non-zero.ll