llvm-project/llvm
Tim Northover c4093c3ced ARM: don't mangle DAG constant if it has more than one use
The basic optimisation was to convert (mul $LHS, $complex_constant) into
roughly "(shl (mul $LHS, $simple_constant), $simple_amt)" when it was expected
to be cheaper. The original logic checks that the mul only has one use (since
we're mangling $complex_constant), but when used in even more complex
addressing modes there may be an outer addition that can pick up the wrong
value too.

I *think* the ARM addressing-mode problem is actually unreachable at the
moment, but that depends on complex assessments of the profitability of
pre-increment addressing modes so I've put a real check in there instead of an
assertion.

llvm-svn: 259228
2016-01-29 19:18:46 +00:00
..
bindings Remove autoconf support 2016-01-26 21:29:08 +00:00
cmake Remove autoconf support 2016-01-26 21:29:08 +00:00
docs [Coverage] Fix more bugs in covmap V1 documentation 2016-01-27 03:13:09 +00:00
examples Remove autoconf support 2016-01-26 21:29:08 +00:00
include [codeview] Begin to add support for inlined call sites 2016-01-29 18:16:43 +00:00
lib ARM: don't mangle DAG constant if it has more than one use 2016-01-29 19:18:46 +00:00
projects Remove autoconf support 2016-01-26 21:29:08 +00:00
resources
test ARM: don't mangle DAG constant if it has more than one use 2016-01-29 19:18:46 +00:00
tools [CodeView] Fix dumping the is_stmt bit from the line table 2016-01-29 16:39:04 +00:00
unittests SmallPtrSetTest: More checks for the swap() testing 2016-01-29 03:34:36 +00:00
utils Bring back the test-suite export in test-release without bringing back the build failures. 2016-01-28 21:09:50 +00:00
.arcconfig
.clang-format
.clang-tidy adding readability-identifier-naming to llvm clang-tidy configuration. 2015-12-08 17:44:51 +00:00
.gitignore
CMakeLists.txt [GlobalISel] Add the proper cmake plumbing. 2016-01-20 20:58:56 +00:00
CODE_OWNERS.TXT The PS4 baton passes. 2015-12-19 20:04:03 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt Revert previous test commit. 2016-01-04 19:13:29 +00:00
configure Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.