Old fork of llvm-mirror, used on older RPCS3 builds
Go to file
Ulrich Weigand 86aef0a4f0 On PowerPC64, integer return values (as well as arguments) are supposed
to be extended to a full register.   This is modeled in the IR by marking
the return value (or argument) with a signext or zeroext attribute.

However, while these attributes are respected for function arguments,
they are currently ignored for function return values by the PowerPC
back-end.  This patch updates PPCCallingConv.td to ask for the promotion
to i64, and fixes LowerReturn and LowerCallResult to implement it.

The new test case verifies that both arguments and return values are
properly extended when passing them; and also that the optimizers
understand incoming argument and return values are in fact guaranteed
by the ABI to be extended.

The patch caused a spurious breakage in CodeGen/PowerPC/coalesce-ext.ll,
since the test case used a "ret" instruction to create a use of an i32
value at the end of the function (to set up data flow as required for
what the test is intended to test).  Since there's now an implicit
promotion to i64, that data flow no longer works as expected.  To fix
this, this patch now adds an extra "add" to ensure we have an appropriate
use of the i32 value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167396 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-05 19:39:45 +00:00
autoconf Add mips64-* and mips64el-* triples to configure scripts 2012-10-29 19:49:45 +00:00
bindings Fix a build error for ocaml bindings that was introduced with the TargetData --> DataLayout changes. 2012-10-19 20:36:22 +00:00
cmake CMake: Include private headers / tablegen files in generated Xcode projects. 2012-10-23 21:36:55 +00:00
docs Add a couple of stubs to the release notes for things I noticed while 2012-11-05 10:17:00 +00:00
examples Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this! 2012-10-24 17:25:11 +00:00
include Implement the cost of abnormal x86 instruction lowering as a table. 2012-11-05 19:32:46 +00:00
lib On PowerPC64, integer return values (as well as arguments) are supposed 2012-11-05 19:39:45 +00:00
projects Add mips64-* and mips64el-* triples to configure scripts 2012-10-29 19:49:45 +00:00
runtime libprofile/CommonProfiling.c: Fix according to C89. 2012-11-02 01:32:02 +00:00
test On PowerPC64, integer return values (as well as arguments) are supposed 2012-11-05 19:39:45 +00:00
tools lli: Initialize the native asm parser for inline assembly. 2012-11-05 19:06:05 +00:00
unittests MCJIT unit test: add calls to ensure that instruction caches are properly invalidated before code execution. 2012-10-31 17:44:16 +00:00
utils Fix a build problem with xlc. The error message was 2012-11-02 20:57:36 +00:00
.gitignore Add extra vim swap file pattern 2012-10-09 23:48:34 +00:00
CMakeLists.txt Removing dependency on third party library for Intel JIT event support. 2012-09-28 17:35:20 +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 Add mips64-* and mips64el-* triples to configure scripts 2012-10-29 19:49:45 +00:00
CREDITS.TXT Move TargetData to DataLayout. 2012-10-08 16:40:38 +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 Don't try to install c-index-test with BUILD_CLANG_ONLY. rdar://12492703 2012-10-24 22:56:32 +00:00
Makefile.common [docs] Remove unsupported references to ExtraSource variable. 2012-05-15 21:32:27 +00:00
Makefile.config.in Re-enable support for --program-prefix. 2012-10-01 18:40:32 +00:00
Makefile.rules Use MACOSX_DEPLOYMENT_TARGET when it is set. <rdar://problem/12433905> 2012-10-12 21:48:14 +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.