llvm-project/llvm
Diego Novillo 9a779623d9 Fix PR 23525 - Separate header mass propagation in irregular loops.
Summary:
When propagating mass through irregular loops, the mass flowing through
each loop header may not be equal. This was causing wrong frequencies
to be computed for irregular loop headers.

Fixed by keeping track of masses flowing through each of the headers in
an irregular loop. To do this, we now keep track of per-header backedge
weights. After the loop mass is distributed through the loop, the
backedge weights are used to re-distribute the loop mass to the loop
headers.

Since each backedge will have a mass proportional to the different
branch weights, the loop headers will end up with a more approximate
weight distribution (as opposed to the current distribution that assumes
that every loop header is the same).

Reviewers: dexonsmith

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D10348

llvm-svn: 239843
2015-06-16 19:10:58 +00:00
..
autoconf configure: Remove non-portable fall-through operator: ;& 2015-06-13 03:46:48 +00:00
bindings Add safestack attribute to LLVMAttribute enum and Go bindings. Correct 2015-06-15 22:16:51 +00:00
cmake Repair cmake libatomic check. 2015-06-16 14:00:01 +00:00
docs Protection against stack-based memory corruption errors using SafeStack 2015-06-15 21:07:11 +00:00
examples BrainF.cpp: Update CreateCall() according to r237624. 2015-05-19 06:50:19 +00:00
include Fix PR 23525 - Separate header mass propagation in irregular loops. 2015-06-16 19:10:58 +00:00
lib Fix PR 23525 - Separate header mass propagation in irregular loops. 2015-06-16 19:10:58 +00:00
projects build: make libunwind a proper project 2015-04-25 01:47:39 +00:00
resources In MSVC builds embed a VERSIONINFO resource in our exe and DLL files. 2015-06-12 15:58:29 +00:00
test Fix PR 23525 - Separate header mass propagation in irregular loops. 2015-06-16 19:10:58 +00:00
tools Replace string GNU Triples with llvm::Triple in TargetMachine::getTargetTriple(). NFC. 2015-06-16 13:15:50 +00:00
unittests llvm/unittests/Support/Path.cpp: Use <windows.h> instead of <Windows.h>. 2015-06-16 06:46:16 +00:00
utils [CodeGen] Introduce a FAULTING_LOAD_OP pseudo-op. 2015-06-15 18:44:08 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Ignore compile_commands.json only at the root of the tree. 2015-03-26 18:55:42 +00:00
CMakeLists.txt R600 -> AMDGPU rename 2015-06-13 03:28:10 +00:00
CODE_OWNERS.TXT Added Andrey Churbanov as the owner of the OpenMP runtime library code 2015-05-05 20:17:53 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
Makefile.rules
README.txt Revert test commit at revision 233535. 2015-03-30 12:39:03 +00:00
configure configure: Remove non-portable fall-through operator: ;& 2015-06-13 03:46:48 +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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.