summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* ARM AAPCS-VFP: fix tracking of allocated VFP registers.Manman Ren2012-10-311-24/+50
| | | | | | | According to the spec, we can backfill VFP registers that were skipped due to alignment constraints. llvm-svn: 167159
* ARM AAPCS-VFP: fix handling of homogeneous aggreate.Manman Ren2012-10-301-6/+80
| | | | | | | If HA can only partially fit into VFP registers, we add padding to make sure HA will be on stack and later VFP CPRCs will be on stack as well. llvm-svn: 167058
* objective-C arc/mrr: Another patch for the new captured block variable Fariborz Jahanian2012-10-301-23/+191
| | | | | | layout meta-data. It is currently off (so no tests). This is wip. llvm-svn: 167047
* Change ForceSizeOpt attribute into MinSize attributeQuentin Colombet2012-10-301-1/+1
| | | | llvm-svn: 167021
* Don't crash on bad atomic operations. PR14176.Eli Friedman2012-10-301-7/+13
| | | | llvm-svn: 166992
* Revert commit r166946Quentin Colombet2012-10-291-3/+0
| | | | llvm-svn: 166957
* Make forcesizeopt attribute available to the end userQuentin Colombet2012-10-291-0/+3
| | | | llvm-svn: 166946
* Handle '*' and '#' asm constraint modifiers.Ulrich Weigand2012-10-291-0/+4
| | | | llvm-svn: 166924
* objective-C arc/mrr: Patch for the new block variable layout meta-data.Fariborz Jahanian2012-10-274-6/+176
| | | | | | It is currently off (so no tests). This is wip. llvm-svn: 166892
* Move two helper functions to AST so that sema can use them.Rafael Espindola2012-10-271-113/+2
| | | | llvm-svn: 166853
* Refactor some code into a new findMaterializedTemporary function.Rafael Espindola2012-10-271-25/+32
| | | | llvm-svn: 166849
* Refactor some code into a new skipRValueSubobjectAdjustments function.Rafael Espindola2012-10-271-45/+51
| | | | llvm-svn: 166848
* Delay codegen to after collecting all SubobjectAdjustment so that the collectionRafael Espindola2012-10-271-6/+6
| | | | | | can be refactored and used in Sema. llvm-svn: 166847
* Add missing safety check to an optimization for do-while loops. PR14191.Eli Friedman2012-10-261-0/+4
| | | | llvm-svn: 166832
* Don't crash synthesizing an ObjC property with an empty struct type. ↵Eli Friedman2012-10-261-0/+8
| | | | | | <rdar://problem/12547611>. llvm-svn: 166825
* Add comment for my patch in r166809.Fariborz Jahanian2012-10-261-0/+2
| | | | llvm-svn: 166823
* Remove BLOCK_BYREF_LAYOUT_BYREF flags from list ofFariborz Jahanian2012-10-261-3/+2
| | | | | | flags for __block variable meta-data. llvm-svn: 166811
* objective-C IRGen: for @implementation nested in Fariborz Jahanian2012-10-261-1/+8
| | | | | | | | | 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
* This patch addresses a 64-bit PowerPC ELF ABI compatibility issue withBill Schmidt2012-10-261-15/+0
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Declare type of flags to be used in a __block (byref)Fariborz Jahanian2012-10-261-0/+12
| | | | | | variable descriptor captured by a block. llvm-svn: 166746
* Oz optimization level sets ForceSizeOpt attribute for each functionQuentin Colombet2012-10-261-0/+2
| | | | llvm-svn: 166744
* Changing name of enum for block literal flags to representFariborz Jahanian2012-10-251-3/+3
| | | | | | what it is meant for. llvm-svn: 166734
* Add some new types in preparation of encoding of captured block variableFariborz Jahanian2012-10-251-0/+69
| | | | | | layout meta-data work. wip. llvm-svn: 166717
* Provide comment describing what buildBlockDescriptor does.Fariborz Jahanian2012-10-251-1/+12
| | | | llvm-svn: 166703
* Cleanup some clang code to use new type functions instead of using cast<>.Micah Villmow2012-10-256-24/+16
| | | | llvm-svn: 166684
* Modify the targets to set appropriate calling convention defaults and C ↵David Tweed2012-10-251-3/+5
| | | | | | | | variables when using a gnueabihf or aapcs-vfp target. Tested by me and Wei-Ren Chen. llvm-svn: 166679
* Initialize debug info for special cases of functions that lack declarations ↵Alexey Samsonov2012-10-254-7/+36
| | | | | | and are generated by Clang (global initializers/destructors, thunks) . Fixes PR13942. llvm-svn: 166676
* -fcatch-undefined-behavior checking for appropriate vptr value: Clang ↵Richard Smith2012-10-253-11/+91
| | | | | | CodeGen side. llvm-svn: 166661
* When we're devirtualizing a method call, make sure the method has the ↵Eli Friedman2012-10-251-7/+7
| | | | | | | | correct IR type. Reported in the thread "devirtualisation appears to crash clang on covariant functions on ARM" on cfe-dev. llvm-svn: 166651
* Remove the HiddenWeakTemplateVTables CodeGen option. It's currently unused.Douglas Gregor2012-10-242-5/+2
| | | | llvm-svn: 166561
* Clang now attempts to create a TargetMachine whenever a triple is given.Nadav Rotem2012-10-241-8/+17
| | | | | | | | 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
* Add padding inreg registers to cause llvm to skip ecx when needed withRafael Espindola2012-10-243-33/+62
| | | | | | the x86_fastcallcc calling convention. llvm-svn: 166538
* Add inreg markers with the x86_fastcallcc calling convention.Rafael Espindola2012-10-241-10/+39
| | | | llvm-svn: 166537
* Change EmitAssemblyHelper to create the target machine earlyNadav Rotem2012-10-241-17/+49
| | | | | | | | | and use it to initialize the TargetTransformInfo analysis pass. We need the TTI information for the loop vectorizer. rdar://12464901 llvm-svn: 166532
* Switch CodeGenOptions over to a .def file, like we do with LangOptions.Douglas Gregor2012-10-239-31/+36
| | | | llvm-svn: 166497
* Don't try to use inreg with 0 sized structs. Thanks to Eli for reporting theRafael Espindola2012-10-231-0/+4
| | | | | | regression. llvm-svn: 166461
* Move private classes into anonymous namespaces.Benjamin Kramer2012-10-201-0/+8
| | | | llvm-svn: 166377
* DR1472: A reference isn't odr-used if it has preceding initialization,Richard Smith2012-10-201-3/+17
| | | | | | | | | 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
* IRgen: Initialize TargetLoweringInfo with a triple.Daniel Dunbar2012-10-191-1/+2
| | | | | | | | - 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
* Fix handling of the regparm attribute in the presence of classes with copyRafael Espindola2012-10-193-42/+48
| | | | | | | | | | | | | 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
* Reintroduce the TargetTransformInfo to the clang pass manager.Nadav Rotem2012-10-191-1/+5
| | | | llvm-svn: 166263
* Fix up comment and invert order. Most simple check first.Eric Christopher2012-10-181-4/+6
| | | | llvm-svn: 166240
* Add a new option for and disable column number information as thereEric Christopher2012-10-181-0/+2
| | | | | | | | | | 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
* Revert svn r165741 "Add TargetTransformInfo to the clang driver."Bob Wilson2012-10-181-5/+1
| | | | | | | 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
* Revert r158009 since there are some uses of artificial functions inEric Christopher2012-10-171-6/+2
| | | | | | debug info. llvm-svn: 166109
* Set a special flag in class metadata when an Objective-C classJohn McCall2012-10-172-6/+28
| | | | | | | | | 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
* Organize and rename the magic constants for class flags.John McCall2012-10-171-48/+54
| | | | | | No functionality change. llvm-svn: 166087
* At -O0, prefer objc_storeStrong with a null new value to theJohn McCall2012-10-173-28/+89
| | | | | | | | | | | 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
* "'Might as well make it static const.' -- John McCall" -- Michael ScottNico Weber2012-10-171-1/+1
| | | | llvm-svn: 166080
* PR13684: Emit vtable entries for deleted functions as __cxa_deleted_function.David Blaikie2012-10-164-1/+19
| | | | | | | | 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
OpenPOWER on IntegriCloud