- Oct 26, 2012
-
-
Fariborz Jahanian authored
flags for __block variable meta-data. llvm-svn: 166811
-
Fariborz Jahanian authored
extern "C", its method definitions must be IRGen'ed before meta-data for class is generated. Otherwise, IRGen crashes (to say the least). // rdar://12581683 llvm-svn: 166809
-
Bill Schmidt authored
varargs parameter passing. A strict reading of the ABI indicates that any argument with alignment greater than 8 may require skipping doublewords in the parameter save area to align the argument, and hence require skipping GPRs. In practice, this is not done by GCC. The alignment restriction is used for internal alignment of a structure, but a structure with 16-byte alignment, for example, is not itself 16-byte aligned in the parameter save area. Although this is messy, it has become the de facto standard used in building existing libraries. My initial varargs support followed the ABI language, but not the de facto standard. Running the GCC compatibility test suite exposed this issue, and indeed showed that LLVM didn't pass parameters self-consistently with my original logic. Removing the additional alignment logic allows the affected tests to now pass. I modified the ppc64-varargs-struct.c test case to remove the existing test for generation of alignment code, which is no longer appropriate. Built and tested on powerpc64-unknown-linux-gnu with no new regressions. llvm-svn: 166805
-
Fariborz Jahanian authored
variable descriptor captured by a block. llvm-svn: 166746
-
Quentin Colombet authored
llvm-svn: 166744
-
Fariborz Jahanian authored
what it is meant for. llvm-svn: 166734
-
- Oct 25, 2012
-
-
Fariborz Jahanian authored
layout meta-data work. wip. llvm-svn: 166717
-
Fariborz Jahanian authored
llvm-svn: 166703
-
Micah Villmow authored
llvm-svn: 166684
-
David Tweed authored
Modify the targets to set appropriate calling convention defaults and C variables when using a gnueabihf or aapcs-vfp target. Tested by me and Wei-Ren Chen. llvm-svn: 166679
-
Alexey Samsonov authored
Initialize debug info for special cases of functions that lack declarations and are generated by Clang (global initializers/destructors, thunks) . Fixes PR13942. llvm-svn: 166676
-
Richard Smith authored
llvm-svn: 166661
-
Eli Friedman authored
Reported in the thread "devirtualisation appears to crash clang on covariant functions on ARM" on cfe-dev. llvm-svn: 166651
-
- Oct 24, 2012
-
-
Douglas Gregor authored
llvm-svn: 166561
-
Nadav Rotem authored
Many of our tests specify triples that are not built into clang. In this commit we allow clang to fail loading the triple if we are only using clang to emit llvm ir. llvm-svn: 166543
-
Rafael Espindola authored
the x86_fastcallcc calling convention. llvm-svn: 166538
-
Rafael Espindola authored
llvm-svn: 166537
-
Nadav Rotem authored
and use it to initialize the TargetTransformInfo analysis pass. We need the TTI information for the loop vectorizer. rdar://12464901 llvm-svn: 166532
-
- Oct 23, 2012
-
-
Douglas Gregor authored
llvm-svn: 166497
-
Rafael Espindola authored
regression. llvm-svn: 166461
-
- Oct 20, 2012
-
-
Benjamin Kramer authored
llvm-svn: 166377
-
Richard Smith authored
initialized by a reference constant expression. Our odr-use modeling still needs work here: we don't yet implement the 'set of potential results of an expression' DR. llvm-svn: 166361
-
- Oct 19, 2012
-
-
Daniel Dunbar authored
- We create two TargetLoweringInfo instances for different pass managers, and they weren't consistent (the one for codegen didn't have the right info). I'm not sure this mattered anywhere in practice. llvm-svn: 166299
-
Rafael Espindola authored
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. llvm-svn: 166266
-
Nadav Rotem authored
llvm-svn: 166263
-
Eric Christopher authored
llvm-svn: 166240
-
- Oct 18, 2012
-
-
Eric Christopher authored
are no known current users of column info. Robustify and fix up a few tests in the process. Reduces the size of debug information by a small amount. Part of PR14106 llvm-svn: 166236
-
Bob Wilson authored
Nadav's llvm change r165665 caused problems with an LTO bootstrap of clang, so I'm reverting it for now, along with follow-on patches like this one. llvm-svn: 166164
-
- Oct 17, 2012
-
-
Eric Christopher authored
debug info. llvm-svn: 166109
-
John McCall authored
has ivars that require destruction, but none that require anything except zero-initialization. This is common in ARC and (when true throughout a class hierarchy) permits the elimination of an unnecessary message-send during allocation. llvm-svn: 166088
-
John McCall authored
No functionality change. llvm-svn: 166087
-
John McCall authored
combination of a load+objc_release; this is generally better for tools that try to track why values are retained and released. Also use objc_storeStrong when copying a block (again, only at -O0), which requires us to do a preliminary store of null in order to compensate for objc_storeStrong's assign semantics. llvm-svn: 166085
-
Nico Weber authored
llvm-svn: 166080
-
David Blaikie authored
This is consistent/interoperable with GCC 4.7 (& __cxa_deleted_function isn't present in 4.4 - not sure when it got added, but you'll need something with that function available for this to work). llvm-svn: 166069
-
Derek Schuff authored
Because PNaCl bitcode must be target-independent, it uses some different bitcode representations from other targets (e.g. byval and sret for structures). This means that without additional type information, it cannot meet some native ABI requirements for some targets (e.g. passing structures containing unions by value on x86-64). To allow generation of code which uses the correct native ABIs, we also support triples such as x86_64-nacl, which uses target-dependent IR (as opposed to le32-nacl, which uses byval and sret). To allow interoperation between the two types of code, this patch adds a calling convention attribute to be used in code compiled with the target-dependent triple, which will generate code using the le32-style bitcode. This calling convention does not need to be explicitly supported in the backend because it determines bitcode representation rather than native conventions (the backend just needs to undersand how to handle byval and sret for the Native Client OS). This patch implements __attribute__((pnaclcall)) to generate calls in bitcode according to the le32 bitcode conventions, an attribute which is accepted by any Native Client target, but issues a warning otherwise. llvm-svn: 166065
-
- Oct 16, 2012
-
-
Manman Ren authored
We generalize r166040 to handle ABI alignment issues for all types. rdar://12439123 llvm-svn: 166052
-
Manman Ren authored
We expand varargs in clang and the call site is handled in the back end, it is hard to match exactly how illegal vectors are handled in the backend. Therefore, we legalize the illegal vector types in clang: if (Size <= 32), legalize to i32. if (Size == 64), legalize to v2i32. if (Size == 128), legalize to v4i32. if (Size > 128), use indirect. rdar://12439123 llvm-svn: 166043
-
Manman Ren authored
We create an aligned temporary space and copy the content over from ap.cur to the temporary space. This is necessary if the natural alignment of the type is greater than the ABI alignment. rdar://12439123 llvm-svn: 166040
-
Joerg Sonnenberger authored
don't try the normal GetOrCreateLLVM. The latter could drop the weak atrtibute on the second reference, if there is no explicit declaration of the aliasee. llvm-svn: 166032
-
David Chisnall authored
metadata. llvm-svn: 166023
-