Mirror of official llvm git repository located at http://llvm.org/git/llvm. Updated every five minutes.
Go to file
Chandler Carruth 9d4f87e9be [PM] Refactor the InstCombiner interface to use an external worklist.
Because in its primary function pass the combiner is run repeatedly over
the same function until doing so produces no changes, it is essentially
to not re-allocate the worklist. However, as a utility, the more common
pattern would be to put a limited set of instructions in the worklist
rather than the entire function body. That is also the more likely
pattern when used by the new pass manager.

The result is a very light weight combiner that does the visiting with
a separable worklist. This can then be wrapped up in a helper function
for users that want a combiner utility, or as I have here it can be
wrapped up in a pass which manages the iterations used when combining an
entire function's instructions.

Hopefully this removes some of the worst of the interface warts that
became apparant with the last patch here. However, there is clearly more
work. I've again left some FIXMEs for the most egregious. The ones that
stick out to me are the exposure of the worklist and IR builder as
public members, and the use of pointers rather than references. However,
fixing these is likely to be much more mechanical and less interesting
so I didn't want to touch them in this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226655 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-21 11:38:17 +00:00
autoconf Trunk is now 3.7.0svn 2015-01-14 17:38:03 +00:00
bindings IR: Return unique_ptr from MDNode::getTemporary() 2015-01-19 21:30:18 +00:00
cmake Don't pass -Wl,z,defs for now. 2015-01-20 22:08:20 +00:00
docs [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
examples Reorder. 2015-01-19 00:35:33 +00:00
include [PM] Replace an abuse of inheritance to override a single function with 2015-01-21 02:11:59 +00:00
lib [PM] Refactor the InstCombiner interface to use an external worklist. 2015-01-21 11:38:17 +00:00
projects
test [Mips][Disassembler]When disassembler meets load/store from coprocessor 2 instructions for mips r6 it crashes as the access to operands array is out of range. This patch adds dedicated decoder method that properly handles decoding of these instructions. 2015-01-21 10:47:36 +00:00
tools For llvm-objdump, hook up existing options to work when using -macho (the Mach-O parser). 2015-01-20 21:47:46 +00:00
unittests IR: Canonicalize GenericDwarfNode empty headers to null 2015-01-20 00:58:46 +00:00
utils [X86] Convert all the i8imm used by SSE and AVX instructions to u8imm. 2015-01-21 08:15:54 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore .gitignore: add some rules for tagging programs 2015-01-10 19:11:29 +00:00
CMakeLists.txt Trunk is now 3.7.0svn 2015-01-14 17:38:03 +00:00
CODE_OWNERS.TXT Add myself as SystemZ code owner 2014-12-18 19:27:50 +00:00
configure Trunk is now 3.7.0svn 2015-01-14 17:38:03 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt Check commit access 2015-01-16 19:23:34 +00:00

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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.