Fork of llvm with experimental commits and workarounds for RPCS3
Go to file
Jakob Stoklund Olesen ac79668cdf Avoid creating dangling physreg live ranges during DCE.
LiveRangeEdit::eliminateDeadDefs() can delete a dead instruction that
reads unreserved physregs. This would leave the corresponding regunit
live interval dangling because we don't have shrinkToUses() for physical
registers.

Fix this problem by turning the instruction into a KILL instead of
deleting it. This happens in a landing pad in
test/CodeGen/X86/2012-05-19-CoalescerCrash.ll:

  %vreg27<def,dead> = COPY %EDX<kill>; GR32:%vreg27

becomes:

  KILL %EDX<kill>

An upcoming fix to the machine verifier will catch problems like this by
verifying regunit live intervals.

This fixes PR13498. I am not including the test case from the PR since
we already have one exposing the problem once the verifier is fixed.

llvm-svn: 161182
2012-08-02 16:36:47 +00:00
autoconf Fix a typo (the the => the) 2012-07-23 08:51:15 +00:00
bindings Remove tabs. 2012-07-19 00:23:13 +00:00
cmake autoconf: Re-introduce LLVM_HOSTTRIPLE since r143500, as rework of PR11060. 2012-07-22 03:04:52 +00:00
docs Sphinxify the Code Generator document. 2012-08-02 08:49:53 +00:00
examples Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h 2012-06-29 12:38:19 +00:00
include Add TargetRegisterInfo::hasRegUnit(). 2012-08-02 14:45:53 +00:00
lib Avoid creating dangling physreg live ranges during DCE. 2012-08-02 16:36:47 +00:00
projects Fix a typo (the the => the) 2012-07-23 08:51:15 +00:00
runtime Free the allocated filename. Found by clang static analyzer. 2012-06-15 09:11:47 +00:00
test Support fpv4 for ARM Cortex-M4. 2012-08-02 08:35:55 +00:00
tools Fix a typo (the the => the) 2012-07-23 08:51:15 +00:00
unittests Add range erase, element insert, and range insert methods to 2012-08-01 08:40:48 +00:00
utils Add more indirection to the disassembler tables to reduce amount of space used to store the operand types and encodings. Store only the unique combinations in a separate table and store indices in the instruction table. Saves about 32K of static data. 2012-08-01 07:39:18 +00:00
.gitignore Add tools/lld to .gitignore. 2012-05-02 21:25:32 +00:00
CMakeLists.txt Revert "Build script changes for R600/SI Codegen v6" 2012-07-16 18:19:46 +00:00
CODE_OWNERS.TXT Add the list of code owners to the top level of the LLVM source tree to 2012-07-26 08:04:09 +00:00
configure autoconf: Re-introduce LLVM_HOSTTRIPLE since r143500, as rework of PR11060. 2012-07-22 03:04:52 +00:00
CREDITS.TXT Alphabetize. 2012-06-19 23:47:58 +00:00
LICENSE.TXT Add YAML parser to Support. 2012-04-03 23:09:22 +00:00
llvm.spec.in Tidy up. s/Low Level Virtual Machine/LLVM/. 2012-01-25 22:00:23 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Do not install llvm-config-host for cross-builds of clang. rdar://11317847 2012-05-09 00:07:02 +00:00
Makefile.common [docs] Remove unsupported references to ExtraSource variable. 2012-05-15 21:32:27 +00:00
Makefile.config.in Remove autoconf support for runtest and tclsh, some of the last vestigal 2012-06-27 23:53:41 +00:00
Makefile.rules Remove 'check-dg', a wrapper around 'check-local-dg' which was just 2012-06-28 00:03:13 +00:00
README.txt test commit 2012-07-11 17:34:12 +00:00

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

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, 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 HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.