History log of /external/clang/lib/CodeGen/ABIInfo.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
651f13cea278ec967336033dd032faef0e9fc2ec 24-Apr-2014 Stephen Hines <srhines@google.com> Updated to Clang 3.5a.

Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/lib/CodeGen/ABIInfo.h
8b54999a831bb195c08541ca995ef0505c96193f 30-Oct-2013 Mark Lacey <mark.lacey@apple.com> Add CodeGenABITypes.h for use in LLDB.

CodeGenABITypes is a wrapper built on top of CodeGenModule that exposes
some of the functionality of CodeGenTypes (held by CodeGenModule),
specifically methods that determine the LLVM types appropriate for
function argument and return values.

I addition to CodeGenABITypes.h, CGFunctionInfo.h is introduced, and the
definitions of ABIArgInfo, RequiredArgs, and CGFunctionInfo are moved
into this new header from the private headers ABIInfo.h and CGCall.h.

Exposing this functionality is one part of making it possible for LLDB
to determine the actual ABI locations of function arguments and return
values, making it possible for it to determine this for any supported
target without hard-coding ABI knowledge in the LLDB code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193717 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
2363072da26da25009bf61c3d9d056a028d4d720 06-Oct-2013 Mark Lacey <mark.lacey@apple.com> Pass CGCXXABIs around directly.

In functions that only need to use the CGCXXABI member of a CodeGenTypes
class, pass that reference around directly rather than a reference to
a CodeGenTypes class.

This makes the actual dependence on CGCXXABI clear at the call sites.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192052 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
64aa4b3ec7e62288e2e66c1935487ece995ca94b 17-Apr-2013 John McCall <rjmccall@apple.com> Standardize accesses to the TargetInfo in IR-gen.

Patch by Stephen Lin!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179638 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
bd7370a78604e9a20d698bfe328c1e43f12a0613 28-Feb-2013 John McCall <rjmccall@apple.com> Use the actual ABI-determined C calling convention for runtime
calls and declarations.

LLVM has a default CC determined by the target triple. This is
not always the actual default CC for the ABI we've been asked to
target, and so we sometimes find ourselves annotating all user
functions with an explicit calling convention. Since these
calling conventions usually agree for the simple set of argument
types passed to most runtime functions, using the LLVM-default CC
in principle has no effect. However, the LLVM optimizer goes
into histrionics if it sees this kind of formal CC mismatch,
since it has no concept of CC compatibility. Therefore, if this
module happens to define the "runtime" function, or got LTO'ed
with such a definition, we can miscompile; so it's quite
important to get this right.

Defining runtime functions locally is quite common in embedded
applications.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
c264e16a42b3f6c36521857a29ea0949d9781c22 31-Jan-2013 Tim Northover <Tim.Northover@arm.com> Add support for AArch64 target.

In cooperation with the LLVM patch, this should implement all scalar front-end
parts of the C and C++ ABIs for AArch64.

This patch excludes the NEON support also reviewed due to an outbreak of
batshit insanity in our legal department. That will be committed soon bringing
the changes to precisely what has been approved.

Further reviews would be gratefully received.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
3b844ba7d5be205a9b4f5f0b0d1b7978977f4b8c 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to
reflect the migration in r171366.

Re-sort the #include lines to reflect the new paths.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171369 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
e4aeeaae8ee93ad5e07c646046c650d594f2775e 24-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Add padding inreg registers to cause llvm to skip ecx when needed with
the x86_fastcallcc calling convention.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
0b4cc950c54c8dd2de51587ef48446de670fa012 19-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix handling of the regparm attribute in the presence of classes with copy
constructors.

When I first moved regparm support to TargetInfo.cpp I tried to isolate it
in classifyArgumentTypeWithReg, but it is actually a lot easier to flip the
code around and check for regparm at the end of the decision tree.

Without this refactoring classifyArgumentTypeWithReg would have to duplicate
the logic about when to use non-byval indirect arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166266 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
25a6a84cf5067b32c271e3ba078676dee838798d 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
b48280ba1790122cd3fa6e17c88ecd6a4571a4eb 31-Jul-2012 Rafael Espindola <rafael.espindola@gmail.com> Handle functions with struct arguments or return types and the regparm
attribute. It is a variation of the x86_64 ABI:

* A struct returned indirectly uses the first register argument to pass the
pointer.
* Floats, Doubles and structs containing only one of them are not passed in
registers.
* Other structs are split into registers if they fit on the remaining ones.
Otherwise they are passed in memory.
* When a struct doesn't fit it still consumes the registers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
57bc51cfec0f39376ad78c03432a12137cd26c2a 24-Jul-2012 Rafael Espindola <rafael.espindola@gmail.com> ABIArgInfo's constructor is private and only used by the static get* methods.
No need to abuse default arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160684 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
f0cc2087b18c48b17c2f647c88a3e7eef19285fd 07-Jan-2012 Akira Hatanaka <ahatanaka@mips.com> Add field PaddingType to ABIArgInfo which specifies the type of padding that
is inserted before the real argument. Padding is needed to ensure the backend
reads from or writes to the correct argument slots when the original alignment
of a byval structure is unavailable due to flattening.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147699 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
9cbe4f0ba01ec304e1e3d071c071f7bca33631c0 09-Jul-2011 Chris Lattner <sabre@nondot.org> clang side to match the LLVM IR type system rewrite patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
9cac4942b920d4c5514e71949e3062ed626bfbdf 19-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116798 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
cf3b6f2504596812db1fcef0df8ce5b3449c4aac 16-Sep-2010 Daniel Dunbar <daniel@zuster.org> IRgen/ABI: Add support for realigning structures which are passed by indirect
reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114114 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
117e3f4cd4d6ea41c3202da8729f94168c5c8239 30-Jul-2010 Chris Lattner <sabre@nondot.org> fix PR5179 and correctly fix PR5831 to not miscompile.

The X86-64 ABI code didn't handle the case when a struct
would get classified and turn up as "NoClass INTEGER" for
example. This is perfectly possible when the first slot
is all padding (e.g. due to empty base classes). In this
situation, the first 8-byte doesn't take a register at all,
only the second 8-byte does.

This fixes this by enhancing the x86-64 abi stuff to allow
and handle this case, reverts the broken fix for PR5831,
and enhances the target independent stuff to be able to
handle an argument value in registers being accessed at an
offset from the memory value.

This is the last x86-64 calling convention related miscompile
that I'm aware of.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109848 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
eb518b4b89e4134b21975530809697142f69b779 29-Jul-2010 Chris Lattner <sabre@nondot.org> move the last hunk of getCoerceResult into the place
that needs it and remove getCoerceResult.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
1ed72678b41c6038b08f48cb7e2a7b61e2dd9179 29-Jul-2010 Chris Lattner <sabre@nondot.org> fix a builder, why didn't clang++ catch this?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
800588fd230d2c37ddce8fbf4a3881352715d700 29-Jul-2010 Chris Lattner <sabre@nondot.org> Kill off the 'coerce' ABI passing form. Now 'direct' and 'extend' always
have a "coerce to" type which often matches the default lowering of Clang
type to LLVM IR type, but the coerce case can be handled by making them
not be the same.

This simplifies things and fixes issues where X86-64 abi lowering would
return coerce after making preferred types exactly match up. This caused
us to compile:

typedef float v4f32 __attribute__((__vector_size__(16)));
v4f32 foo(v4f32 X) {
return X+X;
}

into this code at -O0:

define <4 x float> @foo(<4 x float> %X.coerce) nounwind {
entry:
%retval = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=2]
%coerce = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=2]
%X.addr = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=3]
store <4 x float> %X.coerce, <4 x float>* %coerce
%X = load <4 x float>* %coerce ; <<4 x float>> [#uses=1]
store <4 x float> %X, <4 x float>* %X.addr
%tmp = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%tmp1 = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%add = fadd <4 x float> %tmp, %tmp1 ; <<4 x float>> [#uses=1]
store <4 x float> %add, <4 x float>* %retval
%0 = load <4 x float>* %retval ; <<4 x float>> [#uses=1]
ret <4 x float> %0
}

Now we get:

define <4 x float> @foo(<4 x float> %X) nounwind {
entry:
%X.addr = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=3]
store <4 x float> %X, <4 x float>* %X.addr
%tmp = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%tmp1 = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%add = fadd <4 x float> %tmp, %tmp1 ; <<4 x float>> [#uses=1]
ret <4 x float> %add
}

This implements rdar://8248065



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109733 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
ee5dcd064a811edc90f6c1fb31a837b6c961fed7 29-Jul-2010 Chris Lattner <sabre@nondot.org> dissolve some more complexity: make the x86-64 abi lowering code
compute its own preferred types instead of having CGT compute
them then pass them (circuituously) down into ABIInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109726 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
a3c109bbf6e198f463fbe204da4d25b40dab65c4 29-Jul-2010 Chris Lattner <sabre@nondot.org> now that ABIInfo depends on CGT, it has trivial access to such
things as TargetData, ASTContext, LLVMContext etc. Stop passing
them through so many APIs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109723 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
ea0443212e7ec6ff82e2f174e8e948a6eb0e0876 29-Jul-2010 Chris Lattner <sabre@nondot.org> cave in to reality and make ABIInfo depend on CodeGenTypes.

This will simplify a bunch of code, coming up next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109722 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
2eb9cdd5922c6fe48af185bee1988dabb5bd644e 29-Jul-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109699 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
958c53c369b2e96b7638f170a3fcb4ff43382ff1 29-Jun-2010 Chris Lattner <sabre@nondot.org> change ABIArgInfo to hold its llvm type with PATypeHolder so that
it doesn't dangle as types get refined. This fixes Shootout-C++/lists1
and probably also PR7522.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107196 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
8640cd6bf077e007fdb9bc8c9c5e319f7d70da96 29-Jun-2010 Chris Lattner <sabre@nondot.org> Pass the LLVM IR version of argument types down into computeInfo.
This is somewhat annoying to do this at this level, but it avoids
having ABIInfo know depend on CodeGenTypes for a hint.

Nothing is using this yet, so no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
0a8f847e97f40cce51dc69051b964732333dc028 16-Sep-2009 Anders Carlsson <andersca@mac.com> x86-64 ABI: If a type is a C++ record with either a non-trivial destructor or a non-trivial copy constructor, it should be passed in a pointer. Daniel, plz review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82050 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
f21efe9088a0b3eda1209d1706529f6cb2073092 11-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> LLVMContext is a class now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
47a434ff3d49e7906eda88e8e8242e4297725b32 06-Aug-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78259 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
a1cf15f4680e5cf39e72e28c5ea854fcba792e84 15-Jul-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change, and contextify a bunch of related stuff.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75705 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
cc6fa88666ca2f287df4a600eb31a4087bab9c13 06-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Add new ABIArgInfo kind: Extend. This allows target to implement its own argument
zero/sign extension logic (consider, e.g. target has only 64 bit registers and thus
i32's should be extended as well).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72998 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
c4a59eb306efeb4bffa3cefecd1e6392fc5c4144 06-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Factor out TargetABIInfo stuff into separate file. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72962 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
b53e3e71383233ebb68a6a736cbe8af6d8065700 10-Feb-2009 Daniel Dunbar <daniel@zuster.org> Pull CodeGenFunction::EmitVAArg into target specific ABIInfo classes.
- Missed this file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
11e383aa491a23ebd4a49688a09984c5e16a2e34 05-Feb-2009 Daniel Dunbar <daniel@zuster.org> Merge ABIInfo StructRet/ByVal into Indirect.
- No (intended) functionality change, the semantic changes are to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63850 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
497a85693e8d290c16bcdf5fb97b67bda206aa7d 05-Feb-2009 Daniel Dunbar <daniel@zuster.org> Initialize alignment field for ByVal ABIInfo correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
6f7279bf98e31356306386b2c200820a76b491cf 05-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add ABIArgInfo::dump()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
6bad2658b48264629db595f944a3fbe07f61b4e9 03-Feb-2009 Daniel Dunbar <daniel@zuster.org> Change ABIInfo to compute information for a full signature at a time
(the main point of this restructing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63619 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
0bcc52114e37a8d152d9a05095ee7f7687c9aa94 03-Feb-2009 Daniel Dunbar <daniel@zuster.org> Remove ABIArgInfo::Default kind, ABI is now responsible for specifying
acceptable kind with more precise semantics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
46327aaf031529be2cf8bb21bc76d7a5ae0d43cd 03-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add ABIArgInfo::Direct kind, which passes arguments using whatever the
native IRgen type is. This is like Default, but without any extra
semantics (like automatic tweaking of structures or void).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63615 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
88c2fa96be989571b4afb6229f0ef5a3ef4450cb 03-Feb-2009 Daniel Dunbar <daniel@zuster.org> Move ABIArgInfo into CGFunctionInfo, computed on creation.
- Still have to convert some consumers over.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h
9eb5c6d3242d85359b2d669564c5e2826efb1931 03-Feb-2009 Daniel Dunbar <daniel@zuster.org> Move ABIInfo/ABIArgInfo classes into ABIInfo.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63586 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ABIInfo.h