1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/lib/Transforms
Roman Lebedev 8217a0ec45 [CVP] After proving that @llvm.with.overflow()/@llvm.sat() don't overflow, also try to prove other no-wrap
Summary:
CVP, unlike InstCombine, does not run till exaustion.
It only does a single pass.

When dealing with those special binops, if we prove that they can
safely be demoted into their usual binop form,
we do set the no-wrap we deduced. But when dealing with usual binops,
we try to deduce both no-wraps.

So if we convert e.g. @llvm.uadd.with.overflow() to `add nuw`,
we won't attempt to check whether it can be `add nuw nsw`.

This patch proposes to call `processBinOp()` on newly-created binop,
which is identical to what we do for div/rem already.

Reviewers: nikic, spatel, reames

Reviewed By: nikic

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 375273
2019-10-18 19:32:47 +00:00
..
AggressiveInstCombine [InstCombine] recognize popcount. 2019-10-11 05:13:56 +00:00
Coroutines [Alignment][NFC] Remove AllocaInst::setAlignment(unsigned) 2019-09-30 13:34:44 +00:00
Hello
InstCombine [InstCombine] Fix miscompile bug in canEvaluateShuffled 2019-10-18 07:42:02 +00:00
Instrumentation [Alignment][NFC] Remove dependency on GlobalObject::setAlignment(unsigned) 2019-10-15 11:24:36 +00:00
IPO Reland: Dead Virtual Function Elimination 2019-10-17 09:58:57 +00:00
ObjCARC [ObjC][ARC] Skip debug instructions when computing the insert point of 2019-09-19 20:58:51 +00:00
Scalar [CVP] After proving that @llvm.with.overflow()/@llvm.sat() don't overflow, also try to prove other no-wrap 2019-10-18 19:32:47 +00:00
Utils [PGO][PGSO] SizeOpts changes. 2019-10-18 16:46:01 +00:00
Vectorize [SLP] avoid reduction transform on patterns that the backend can load-combine (2nd try) 2019-10-16 18:06:24 +00:00
CMakeLists.txt
LLVMBuild.txt