1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
Go to file
Evan Cheng e9267f10c7 Fix PR5024 with a big hammer: disable the double-def assertion in the scavenger.
LiveVariables add implicit kills to correctly track partial register kills. This works well enough and is fairly accurate. But coalescer can make it impossible to maintain these markers. e.g.

        BL <ga:sss1>, %R0<kill,undef>, %S0<kill>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def>, ...
...
	%reg1031<def> = FLDS <cp#1>, 0, 14, %reg0, Mem:LD4[ConstantPool]
...
   	%S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill>

When reg1031 and S0 are coalesced, the copy (FCPYS) will be eliminated the the implicit-kill of D0 is lost. In this case it's possible to move the marker to the FLDS. But in many cases, this is not possible. Suppose

	%reg1031<def> = FOO <cp#1>, %D0<imp-def>
...
   	%S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill>

When FCPYS goes away, the definition of S0 is the "FOO" instruction. However, transferring the D0 implicit-kill to FOO doesn't work since it is the def of D0 itself. We need to fix this in another time by introducing a "kill" pseudo instruction to track liveness.

Disabling the assertion is not ideal, but machine verifier is doing that job now. It's important to know double-def is not a miscomputation since it means a register should be free but it's not tracked as free. It's a performance issue instead.

llvm-svn: 82677
2009-09-24 02:27:09 +00:00
autoconf PR4047: Permit configure --enable-targets=host,cpp for example. "host" has the 2009-09-23 17:05:42 +00:00
bindings Expose initializing the native target for the execution engine. 2009-09-14 21:54:32 +00:00
cmake Update CMake. 2009-09-17 00:06:48 +00:00
docs Sync c++ kaleidoscope tutorial with test. 2009-09-22 21:14:49 +00:00
examples Add examples for Kaleidoscope chapters 2 through 6. 2009-09-22 21:15:19 +00:00
include Clean up LiveVariables and change how it deals with partial updates and kills. This also eliminate the horrible check which scan forward to the end of the basic block. It should be faster and more accurate. 2009-09-24 02:15:22 +00:00
lib Fix PR5024 with a big hammer: disable the double-def assertion in the scavenger. 2009-09-24 02:27:09 +00:00
projects install-sh chmods to 0755 by default, and this causes 'git diff' to show 2009-08-28 16:12:48 +00:00
runtime OptimalEdgeProfiling: Creation of profiles. 2009-09-01 19:03:44 +00:00
test Fix PR5024 with a big hammer: disable the double-def assertion in the scavenger. 2009-09-24 02:27:09 +00:00
tools pretty mechanical changes to match coding guidelines (blessed by sabre on IRC) 2009-09-23 02:46:12 +00:00
unittests Roll back r82348, which introduced an infinite loop in ParseCStringVector() that 2009-09-24 01:14:07 +00:00
utils lit: When executing shell scripts internally, don't allow piped stderr on any 2009-09-22 09:50:38 +00:00
website
win32 Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come. 2009-07-24 23:12:02 +00:00
Xcode Remove the IA-64 backend. 2009-07-24 00:30:09 +00:00
build-for-llvm-top.sh
CMakeLists.txt Initial support for running LLVM tests from cmake. 2009-09-22 07:38:44 +00:00
configure PR4047: Permit configure --enable-targets=host,cpp for example. "host" has the 2009-09-23 17:05:42 +00:00
CREDITS.TXT Add myself to the blame list. 2009-08-20 15:20:15 +00:00
LICENSE.TXT Add regular expression matching support, based on OpenBSD regexec()/regcomp() 2009-08-30 08:24:09 +00:00
llvm.spec.in
Makefile Build (not test) the unittests as part of a normal build. 2009-09-13 22:39:27 +00:00
Makefile.common
Makefile.config.in Improve support for cross-hosted builds of LLVM. 2009-09-02 23:52:23 +00:00
Makefile.rules Add 'make check-all', which runs the LLVM tests along with the clang tests if 2009-09-20 06:17:21 +00:00
ModuleInfo.txt
README.txt

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.