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
|