LLVM backend for 6502
Go to file
Bob Wilson 67ba22318b Fix a minor bug in DAGCombiner's folding of SELECT. Folding "select C, 0, 1"
to "C ^ 1" is only valid when C is known to be either 0 or 1.  Most of the
similar foldings in this function only handle "i1" types, but this one appears
intentionally written to handle larger integer types.  If C has an integer
type larger than "i1", this needs to check if the high bits of a boolean
are known to be zero.  I also changed the comment to describe this folding as
"C ^ 1" instead of "~C", since that is what the code does and since the latter
would only be valid for "i1" types.  The good news is that most LLVM targets
use TargetLowering::ZeroOrOneBooleanContent so this change will not disable
the optimization; the bad news is that I've been unable to come up with a
testcase to demonstrate the problem.

I have also removed a "FIXME" comment for folding "select C, X, 0" to "C & X",
since the code looks correct to me.  It could be made more aggressive by not
limiting the type to "i1", but that would then require checking for
TargetLowering::ZeroOrNegativeOneBooleanContent.  Similar changes could be
done for the other SELECT foldings, but it was decided to be not worth the
trouble and complexity (see e.g., r44663).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62790 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-22 22:05:48 +00:00
autoconf Revert r62553 and r62616 due to issues with portability. 2009-01-22 20:09:20 +00:00
bindings Rename getABITypeSize to getTypePaddedSize, as 2009-01-12 20:38:59 +00:00
cmake CMake: Tests PERL availability with PERL_EXECUTABLE variable. 2009-01-22 01:20:31 +00:00
docs Add a few more notes about LLVM IR features that codegen doesn't 2009-01-22 01:39:38 +00:00
examples reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an 2008-11-21 16:42:48 +00:00
include introduce a useful abstraction to find out if a Use is in the call position of an instruction 2009-01-22 21:35:57 +00:00
lib Fix a minor bug in DAGCombiner's folding of SELECT. Folding "select C, 0, 1" 2009-01-22 22:05:48 +00:00
projects Add "sample" documentation to sample project. 2008-09-15 05:31:29 +00:00
runtime Fixing the stack walker. 2008-01-24 05:16:36 +00:00
test Don't create ISD::FNEG nodes after legalize if they aren't legal. 2009-01-22 21:58:43 +00:00
tools Fix 'llvm-config --libs' output. 2009-01-21 13:05:00 +00:00
unittests Port this test from dejagnu to unit testing. 2009-01-19 18:08:33 +00:00
utils Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead. 2009-01-22 09:10:11 +00:00
website
win32 Rename AddReadAttrs to FunctionAttrs, and teach it how 2008-12-31 16:14:43 +00:00
Xcode Remove Stacker.html from Xcode project. 2008-10-14 23:23:59 +00:00
build-for-llvm-top.sh Allow the configure options to be set according to the llvm-top options. 2007-08-31 19:53:42 +00:00
CMakeLists.txt CMake: Option for building with -fPIC. 2008-11-20 19:13:51 +00:00
configure Regenerated configure after backing out 62553 and r62616. 2009-01-22 20:11:17 +00:00
CREDITS.TXT Adding your's truly to CREDITS.TXT 2009-01-19 15:04:29 +00:00
LICENSE.TXT Renamed Google Test license file from COPYING to LICENSE.TXT to match LLVM 2009-01-05 17:42:15 +00:00
llvm.spec.in
Makefile Add targets to support the installation of clang in isolation. 2009-01-19 19:48:23 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.rules Don't create .dir files in installation directories. Switch to using 2009-01-22 03:24:22 +00:00
ModuleInfo.txt
README.txt Remove extra lines 2008-07-28 20:50:25 +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.