[ValueTracking] Avoid redundant known bits calculation in computeOverflowForSignedAdd()
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 22 Mar 2019 17:51:40 +0000 (17:51 +0000)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 22 Mar 2019 17:51:40 +0000 (17:51 +0000)
commit280a6b01c8f6279ba2e7b9a15dfb2c81f5de6088
tree06a071818d96c9b6d8400106fcf49e46d10e4d00
parent564392d752d2b9b2018e401a17145d604c1cb3cc
[ValueTracking] Avoid redundant known bits calculation in computeOverflowForSignedAdd()

We're already computing the known bits of the operands here. If the
known bits of the operands can determine the sign bit of the result,
we'll already catch this in signedAddMayOverflow(). The only other
way (and as the comment already indicates) we'll get new information
from computing known bits on the whole add, is if there's an assumption
on it.

As such, we change the code to only compute known bits from assumptions,
instead of computing full known bits on the add (which would unnecessarily
recompute the known bits of the operands as well).

Differential Revision: https://reviews.llvm.org/D59473

llvm-svn: 356785
llvm/lib/Analysis/ValueTracking.cpp