summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenObjC
Commit message (Collapse)AuthorAgeFilesLines
* Bugfix for r181629:Adrian Prantl2013-05-221-1/+2
| | | | | | | | | - The return type should be a pointer to the class type. - Make the condition more specific. rdar://problem/13359718 llvm-svn: 182504
* ObjC Debug Info: Emit the correct method names for accessors forAdrian Prantl2013-05-171-0/+35
| | | | | | | | properties declared in a protocol. rdar://problem/13798000 llvm-svn: 182176
* ObjC debug info: Substitute the class type for methods that returnAdrian Prantl2013-05-101-0/+27
| | | | | | | | a related type (e.g., if they use the instancetype keyword). rdar://problem/13359718 llvm-svn: 181629
* Correctly emit certain implicit references to 'self' even withinJohn McCall2013-05-032-4/+2
| | | | | | | | | | | | | | | | | | a lambda. Bug #1 is that CGF's CurFuncDecl was "stuck" at lambda invocation functions. Fix that by generally improving getNonClosureContext to look through lambdas and captured statements but only report code contexts, which is generally what's wanted. Audit uses of CurFuncDecl and getNonClosureAncestor for correctness. Bug #2 is that lambdas weren't specially mapping 'self' when inside an ObjC method. Fix that by removing the requirement for that and using the normal EmitDeclRefLValue path in LoadObjCSelf. rdar://13800041 llvm-svn: 181000
* Ensure that the line table for functions with cleanups is sequential.Adrian Prantl2013-05-022-4/+108
| | | | | | | | | | | | | | | | If there is cleanup code, the cleanup code gets the debug location of the closing '}'. The subsequent ret IR-instruction does not get a debug location. The return _expression_ will get the debug location of the return statement. If the function contains only a single, simple return statement, the cleanup code may become the first breakpoint in the function. In this case we set the debug location for the cleanup code to the location of the return statement. rdar://problem/13442648 llvm-svn: 180932
* Remove an empty line so the line numbers match up again after the recent ↵Adrian Prantl2013-04-191-1/+0
| | | | | | documentation change. llvm-svn: 179898
* still not relaxed enough.Adrian Prantl2013-04-191-1/+1
| | | | llvm-svn: 179897
* cleanup and relax test casesAdrian Prantl2013-04-191-2/+3
| | | | llvm-svn: 179896
* Emit the underlying type in the debug info for all kinds of fixed enumsAdrian Prantl2013-04-191-0/+64
| | | | | | | | instead of only C++11-scoped-with-class-tag enums. rdar://problem/13463793 llvm-svn: 179879
* objc_autoreleasePoolPop() can throw if a -dealloc does.John McCall2013-04-161-2/+25
| | | | | | | | | | | | | Model it as throwing so that the exception can be caught. This is generally not expected to have significant code-size impact because the contents of the @autoreleasepool block are very likely to contain a call, very likely at the same cleanup level as the @autoreleasepool itself. rdar://13660038 llvm-svn: 179630
* Trying fixing test to make buildbot happy again.Fariborz Jahanian2013-04-161-1/+1
| | | | llvm-svn: 179629
* modify test to try to make buildbot happy.Fariborz Jahanian2013-04-161-2/+1
| | | | llvm-svn: 179606
* Objective-C IRGen. Use llvm::WeakVHFariborz Jahanian2013-04-161-0/+44
| | | | | | | | | | for caching couple of global symbols used for generation of CF/NS string meta-data so they are not released prematuely in certain corner cases. // rdar:// 13598026. Reviewed by John M. llvm-svn: 179599
* FileCheck-ify more grep tests with quoted double quotesReid Kleckner2013-04-113-62/+69
| | | | | | | | This required some tedious reordering to match clang's order. Presumably these ObjC tests were generated based on llvm-gcc's output ordering. llvm-svn: 179282
* FileCheck-ify some clang grep tests that use double quotesReid Kleckner2013-04-103-14/+16
| | | | | | | The escaping interaction between Python and grep doesn't work on my system. This change fixes the tests for me. llvm-svn: 179214
* Don't copy just to capture a strong block pointer under ARC.John McCall2013-04-081-0/+39
| | | | | | | | | It turns out that the optimizer can't eliminate this without extra information, for which there's a separate bug. rdar://13588325 llvm-svn: 179069
* Be sure to check ARC conventions on the implicit method declarationsJohn McCall2013-04-041-0/+45
| | | | | | | | | of a property just in case the property's getter happens to be +1. We won't synthesize a getter for such a property, but we will allow the user to define a +1 method for it. rdar://13115896 llvm-svn: 178731
* Protect the values of array and dictionary literals from theJohn McCall2013-04-041-24/+67
| | | | | | | | | | ARC optimizer while they're held in local unsafe buffers. Based on a patch by Jesse Rusak! rdar://13573224 llvm-svn: 178721
* In ObjC++ on legacy runtimes, push an EH cleanup as well asJohn McCall2013-04-031-2/+2
| | | | | | | | | | | | a normal cleanup when entering a @try or @synchronized to ensure that we clean that up if an exception is triggered. Apparently GCC did this, so it's hard to argue that we shouldn't do at least as much. rdar://12364847 llvm-svn: 178599
* generalize testcaseAdrian Prantl2013-03-291-1/+1
| | | | llvm-svn: 178383
* Bugfix/Followup for r177086.Adrian Prantl2013-03-294-20/+35
| | | | | | | | | * Store the .block_descriptor (instead of self) in the alloca so we can guarantee that all captured variables are available at -O0. * Add the missing OpDeref for the alloca. rdar://problem/12767564 llvm-svn: 178361
* Make clang to mark static stack allocations with lifetime markers to enable ↵Nadav Rotem2013-03-232-12/+13
| | | | | | | | | a more aggressive stack coloring. Patch by John McCall with help by Shuxin Yang. rdar://13115369 llvm-svn: 177819
* Under ARC, when we're passing the address of a strong variableJohn McCall2013-03-233-10/+16
| | | | | | | | | | | | to an out-parameter using the indirect-writeback conversion, and we copied the current value of the variable to the temporary, make sure that we register an intrinsic use of that value with the optimizer so that the value won't get released until we have a chance to retain it. rdar://13195034 llvm-svn: 177813
* Generalize debug info tests to be forward compatible with future ↵David Blaikie2013-03-212-2/+2
| | | | | | DISubprogram changes llvm-svn: 177659
* Simplify/generalize some debug info test casesDavid Blaikie2013-03-197-17/+17
| | | | | | | | | Mostly, try to depend on the annotation comments more so these tests are more legible, brief, and agnostic to schema changes in the future (sure, they're not agnostic to changes to the comment annotations but since they're easier to read they should be easier to update if that happens). llvm-svn: 177457
* Add a clarifying note when a return statement is rejected becauseJohn McCall2013-03-191-4/+12
| | | | | | | | we expect a related result type. rdar://12493140 llvm-svn: 177378
* Generalize a few debug info test casesDavid Blaikie2013-03-171-1/+1
| | | | | | | | Checking for the annotation comment rather than the metadata values makes these tests resilient to a coming refactor that will pull these fields out into a separate metadata node. llvm-svn: 177237
* Add a testcase for r177118.Adrian Prantl2013-03-141-1/+2
| | | | llvm-svn: 177124
* Allocate stack storage for .block_descriptor and captured self at -O0.Adrian Prantl2013-03-141-0/+64
| | | | | | | | | This way the register allocator will not optimize away the debug info for captured variables. Fixes rdar://problem/12767564 llvm-svn: 177086
* Tighten up the rules for precise lifetime and documentJohn McCall2013-03-132-72/+121
| | | | | | | | the requirements on the ARC optimizer. rdar://13407451 llvm-svn: 176924
* Improve the caching of debuginfo Objective C interface types.Adrian Prantl2013-03-111-0/+5
| | | | | | | | Generate forward declarations that are RAUW'd by finalize(). We thus avoid outputting the same type several times in multiple stages of completion. llvm-svn: 176820
* Ensure that DIType is regenerated after we visit an implementationAdrian Prantl2013-03-063-0/+96
| | | | | | | | | | that adds ivars to an interface. Fixes rdar://13175234 This is an update to r176116 that performs a smart caching of interfaces. llvm-svn: 176584
* Add more of the command line options as attribute flags.Bill Wendling2013-02-282-1/+4
| | | | | | These can be easily queried by the back-end. llvm-svn: 176304
* Use the actual ABI-determined C calling convention for runtimeJohn McCall2013-02-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 176286
* Temporarily revert r176116 for compile-time performance regression.Adrian Prantl2013-02-273-95/+0
| | | | | | This reverts commit ea95e4587fd13606fbf63b10a07a7d02026aa39c. llvm-svn: 176151
* Reapply r176133 with testcase fixes.Bill Wendling2013-02-275-22/+13
| | | | llvm-svn: 176145
* Ensure that DIType is regenerated after we visited an implementation that ↵Adrian Prantl2013-02-263-0/+95
| | | | | | adds ivars to an interface. Fixes rdar://13175234 llvm-svn: 176116
* Revert "Add more attributes from the command line to functions."Anna Zaks2013-02-255-14/+20
| | | | | | | | This reverts commit 176009. The commit is a likely cause of several buildbot failures. llvm-svn: 176044
* Add more attributes from the command line to functions.Bill Wendling2013-02-255-20/+14
| | | | | | | This is an ongoing process. Any command line option which a back-end cares about should be added here. llvm-svn: 176009
* Update tests so that we don't test for function-only attributes on call sites.Bill Wendling2013-02-221-3/+3
| | | | llvm-svn: 175921
* Update to use references to attribute groups instead of listing the ↵Bill Wendling2013-02-2214-80/+104
| | | | | | attributes on the call/invoke instructions. llvm-svn: 175878
* Patch for debug info of qualified-id types is 'id'Fariborz Jahanian2013-02-211-0/+41
| | | | | | By Adrian Pranti. llvm-svn: 175793
* objective-C arc IR-gen. Retaining of strongFariborz Jahanian2013-02-216-13/+15
| | | | | | | | | | arguments in function prologue is done with objc_StoreStrong to pair it with similar objc_StoreStrong for release in function epilogue. This is done with -O0 only. // rdar://13145317 llvm-svn: 175698
* Modify the tests to use attribute group references instead of listing theBill Wendling2013-02-205-9/+27
| | | | | | function attributes. llvm-svn: 175606
* Use the actual class visibility for the ObjC EHTYPE global,John McCall2013-02-191-0/+27
| | | | | | | | not the global visibility mode. Noticed by inspection. llvm-svn: 175479
* CodeGenFunction::CurFuncDecl can be NULL; fix crash introduced in r175386.Douglas Gregor2013-02-181-1/+13
| | | | llvm-svn: 175448
* Update test cases to account for DIBuilder type changes.David Blaikie2013-02-182-2/+2
| | | | | | Paired commit with LLVM, may produce temporary build breakage. llvm-svn: 175427
* Test ivar-invariant.m: use a more idiomatic RUN line and tighten the testDmitri Gribenko2013-02-171-1/+4
| | | | | | by matching the function name first llvm-svn: 175395
* [clang] fix test execution commandSaleem Abdulrasool2013-02-171-1/+1
| | | | | Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org> llvm-svn: 175387
* [CodeGen] tighten objc ivar invariant.load attributionSaleem Abdulrasool2013-02-171-0/+53
| | | | | | | | | | | | | | | | | An ivar ofset cannot be marked as invariant load in all cases. The ivar offset is a lazily initialised constant, which is dependent on an objc_msgSend invocation to perform a fixup of the offset. If the load is being performed on a method implemented by the class then this load can safely be marked as an inviarant because a message must have been passed to the class at some point, forcing the ivar offset to be resolved. An additional heuristic that can be used to identify an invariant load would be if the ivar offset base is a parameter to an objc method. However, without the parameters available at hand, this is currently not possible. Reviewed-by: John McCall <rjmccall@apple.com> Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org> llvm-svn: 175386
OpenPOWER on IntegriCloud