Begin adding docs and IR-level support for the inalloca attribute
authorReid Kleckner <reid@kleckner.net>
Thu, 19 Dec 2013 02:14:12 +0000 (02:14 +0000)
committerReid Kleckner <reid@kleckner.net>
Thu, 19 Dec 2013 02:14:12 +0000 (02:14 +0000)
commit4b70bfc905f3ac68a8429f9fe0016e30433b3b0c
treea00d968a7acb98e5d24df90bbb9d1ba61befb0c9
parent1d4866ccbfa64517e5755ddb06f92b4b6aafda0f
Begin adding docs and IR-level support for the inalloca attribute

The inalloca attribute is designed to support passing C++ objects by
value in the Microsoft C++ ABI.  It behaves the same as byval, except
that it always implies that the argument is in memory and that the bytes
are never copied.  This attribute allows the caller to take the address
of an outgoing argument's memory and execute arbitrary code to store
into it.

This patch adds basic IR support, docs, and verification.  It does not
attempt to implement any lowering or fix any possibly broken transforms.

When this patch lands, a complete description of this feature should
appear at http://llvm.org/docs/InAlloca.html .

Differential Revision: http://llvm-reviews.chandlerc.com/D2173

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197645 91177308-0d34-0410-b5e6-96231b3b80d8
20 files changed:
docs/InAlloca.rst [new file with mode: 0644]
docs/LangRef.rst
include/llvm-c/Core.h
include/llvm/Bitcode/LLVMBitCodes.h
include/llvm/IR/Argument.h
include/llvm/IR/Attributes.h
include/llvm/Support/CallSite.h
lib/AsmParser/LLLexer.cpp
lib/AsmParser/LLParser.cpp
lib/AsmParser/LLToken.h
lib/Bitcode/Reader/BitcodeReader.cpp
lib/Bitcode/Writer/BitcodeWriter.cpp
lib/IR/Attributes.cpp
lib/IR/Function.cpp
lib/IR/Verifier.cpp
lib/Target/CppBackend/CPPBackend.cpp
test/Bitcode/attributes.ll
test/CodeGen/CPP/attributes.ll [new file with mode: 0644]
test/Verifier/inalloca1.ll [new file with mode: 0644]
test/Verifier/inalloca2.ll [new file with mode: 0644]