diff options
author | Sam Parker <sam.parker@arm.com> | 2018-11-19 11:34:40 +0000 |
---|---|---|
committer | Sam Parker <sam.parker@arm.com> | 2018-11-19 11:34:40 +0000 |
commit | e7c42dd7e2334c2dd04bbebabf92b40ed6b61031 (patch) | |
tree | 7d7e5f39255960f0c44e8c7f7aaf02eb6dd39f94 /clang/unittests/Basic/FileManagerTest.cpp | |
parent | 12c046fba0cb3ab6a654aaaffba75436aac55b34 (diff) | |
download | llvm-e7c42dd7e2334c2dd04bbebabf92b40ed6b61031.zip llvm-e7c42dd7e2334c2dd04bbebabf92b40ed6b61031.tar.gz llvm-e7c42dd7e2334c2dd04bbebabf92b40ed6b61031.tar.bz2 |
[ARM] Remove trunc sinks in ARM CGP
Truncs are treated as sources if their produce a value of the same
type as the one we currently trying to promote. Truncs used to be
considered as a sink if their operand was the same value type.
We now allow smaller types in the search, so we should search through
truncs that produce a smaller value. These truncs can then be
converted to an AND mask.
This leaves sinks as being:
- points where the value in the register is being observed, such as
an icmp, switch or store.
- points where value types have to match, such as calls and returns.
- zext are included to ease the transformation and are generally
removed later on.
During this change, it also became apart from truncating sinks was
broken: if a sink used a source, its type information had already
been lost by the time the truncation happens. So I've changed the
method of caching the type information.
Differential Revision: https://reviews.llvm.org/D54515
llvm-svn: 347191
Diffstat (limited to 'clang/unittests/Basic/FileManagerTest.cpp')
0 files changed, 0 insertions, 0 deletions