summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/function-attributes.c
Commit message (Collapse)AuthorAgeFilesLines
* Make some tests LLVM-optimization agnostic and remove some others that were ↵David Blaikie2015-11-141-28/+9
| | | | | | | | | | | | | | | | beyond value/repair Several of these tests (the two deleted, and the one removal edit) were relying on the optimizer to collapse things to test some frontend feature. The tests were really old and features seemed amply covered by other parts of the test suite, so I just removed them. If anyone thinks they're valuable enough to keep/fix, we can play around with that, for sure. (inspired by r252872) llvm-svn: 253114
* Update clang regression tests for 'norecurse'James Molloy2015-11-121-3/+3
| | | | | | FunctionAttrs has just been taught how to infer 'norecurse'. Update clang tests for LLVM r252871. llvm-svn: 252872
* Revert "Always_inline codegen rewrite" and 2 follow-ups.Evgeniy Stepanov2015-09-141-2/+3
| | | | | | | | | | Revert "Update cxx-irgen.cpp test to allow signext in alwaysinline functions." Revert "[CodeGen] Remove wrapper-free always_inline functions from COMDATs" Revert "Always_inline codegen rewrite." Reason for revert: PR24793. llvm-svn: 247620
* Always_inline codegen rewrite.Evgeniy Stepanov2015-09-121-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current implementation may end up emitting an undefined reference for an "inline __attribute__((always_inline))" function by generating an "available_externally alwaysinline" IR function for it and then failing to inline all the calls. This happens when a call to such function is in dead code. As the inliner is an SCC pass, it does not process dead code. Libc++ relies on the compiler never emitting such undefined reference. With this patch, we emit a pair of 1. internal alwaysinline definition (called F.alwaysinline) 2a. A stub F() { musttail call F.alwaysinline } -- or, depending on the linkage -- 2b. A declaration of F. The frontend ensures that F.inlinefunction is only used for direct calls, and the stub is used for everything else (taking the address of the function, really). Declaration (2b) is emitted in the case when "inline" is meant for inlining only (like __gnu_inline__ and some other cases). This approach, among other nice properties, ensures that alwaysinline functions are always internal, making it impossible for a direct call to such function to produce an undefined symbol reference. This patch is based on ideas by Chandler Carruth and Richard Smith. llvm-svn: 247494
* Revert "Specify target triple in alwaysinline tests."Evgeniy Stepanov2015-09-111-2/+3
| | | | | | | | | Revert "Always_inline codegen rewrite." Breaks gdb & lldb tests. Breaks on Fedora 22 x86_64. llvm-svn: 247491
* Always_inline codegen rewrite.Evgeniy Stepanov2015-09-111-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current implementation may end up emitting an undefined reference for an "inline __attribute__((always_inline))" function by generating an "available_externally alwaysinline" IR function for it and then failing to inline all the calls. This happens when a call to such function is in dead code. As the inliner is an SCC pass, it does not process dead code. Libc++ relies on the compiler never emitting such undefined reference. With this patch, we emit a pair of 1. internal alwaysinline definition (called F.alwaysinline) 2a. A stub F() { musttail call F.alwaysinline } -- or, depending on the linkage -- 2b. A declaration of F. The frontend ensures that F.inlinefunction is only used for direct calls, and the stub is used for everything else (taking the address of the function, really). Declaration (2b) is emitted in the case when "inline" is meant for inlining only (like __gnu_inline__ and some other cases). This approach, among other nice properties, ensures that alwaysinline functions are always internal, making it impossible for a direct call to such function to produce an undefined symbol reference. This patch is based on ideas by Chandler Carruth and Richard Smith. llvm-svn: 247465
* Re-enable several builtins in non-gnu modes.Evgeniy Stepanov2014-04-161-0/+11
| | | | | | | | | This is a partial revert of 183015. By not recognizing things like _setjmp we lose (returns_twice) attribute on them, which leads to incorrect code generation. Fixes PR16138. llvm-svn: 206362
* CHECK-LABEL-ify some code gen tests to improve diagnostic experience when ↵Stephen Lin2013-08-151-6/+6
| | | | | | tests fail. llvm-svn: 188447
* Add more of the command line options as attribute flags.Bill Wendling2013-02-281-3/+5
| | | | | | These can be easily queried by the back-end. llvm-svn: 176304
* Reapply r176133 with testcase fixes.Bill Wendling2013-02-271-5/+3
| | | | llvm-svn: 176145
* Fix testcases to not rely upon target-* attributes.Bill Wendling2013-02-261-30/+25
| | | | llvm-svn: 176135
* Revert "Add more attributes from the command line to functions."Anna Zaks2013-02-251-25/+30
| | | | | | | | 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-251-30/+25
| | | | | | | 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-5/+8
| | | | llvm-svn: 175921
* Update to use references to attribute groups instead of listing the ↵Bill Wendling2013-02-221-5/+5
| | | | | | attributes on the call/invoke instructions. llvm-svn: 175878
* Modify the tests to use attribute group references instead of listing theBill Wendling2013-02-201-14/+23
| | | | | | function attributes. llvm-svn: 175606
* Update the tests.Bill Wendling2013-01-311-2/+2
| | | | | | | This update coincides with r174110. That change ordered the attributes alphabetically. llvm-svn: 174111
* Semantic analysis and CodeGen support for C11's _Noreturn. This is modeled asRichard Smith2013-01-301-1/+7
| | | | | | an attribute for consistency with our other noreturn mechanisms. llvm-svn: 173898
* Add returns_twice to functions that are known to return twice. This implementsRafael Espindola2011-10-121-0/+11
| | | | | | the same behavior of gcc by keeping the attribute out of the function type. llvm-svn: 141803
* Propagate __attribute__((returns_twice)) from C to IL.Rafael Espindola2011-10-031-0/+11
| | | | llvm-svn: 141002
* Emit the 'alignstack' LLVM function attribute when we encounter a functionCharles Davis2010-02-131-0/+8
| | | | | | | marked 'force_align_arg_pointer'. Almost there; now all I need to do is finish up the backend. llvm-svn: 96100
* Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.Daniel Dunbar2009-12-151-1/+1
| | | | | | | | | - This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). llvm-svn: 91446
* Set OptimizeForSize LLVM function attribute with -Os.Daniel Dunbar2009-10-271-9/+26
| | | | llvm-svn: 85278
* Convert test to FileCheck.Daniel Dunbar2009-10-271-20/+17
| | | | llvm-svn: 85277
* Prep for new warning.Mike Stump2009-07-211-1/+1
| | | | llvm-svn: 76638
* When defining a function whose type has no prototype, make an effortChris Lattner2009-05-051-0/+19
| | | | | | | | to go back and clean up existing uses of the bitcasted function. This is not just an optimization: it is required for correctness to get always inline functions to work, see testcases in function-attributes.c. llvm-svn: 70971
* PR4133: fix always_inline implementation to be consistent with gcc.Eli Friedman2009-05-031-2/+1
| | | | llvm-svn: 70786
* defer emission of always_inline, extern_inline, and inline functions (when Chris Lattner2009-04-141-1/+2
| | | | | | not in c89 mode). llvm-svn: 69032
* Don't set both readnone and readonly.Daniel Dunbar2009-04-101-0/+4
| | | | llvm-svn: 68833
* Rename clang to clang-cc.Daniel Dunbar2009-03-241-1/+1
| | | | | | Tests and drivers updated, still need to shuffle dirs. llvm-svn: 67602
* Temporarily disable clearing of insert point (to indicate unreachableDaniel Dunbar2009-02-251-0/+7
| | | | | | | code) when calling noreturn functions; general expression emission isn't ready to do the right thing in all cases. llvm-svn: 65473
* Set call attribute for direct calls (i.e. noreturn).Daniel Dunbar2009-02-201-1/+12
| | | | | | - Remove an unused variant of EmitCallExpr overload. llvm-svn: 65130
* Force triple for codegen tests which have expectations on outputDaniel Dunbar2009-02-031-1/+1
| | | | | | types. llvm-svn: 63669
* Add attribute always_inline support.Daniel Dunbar2008-10-281-1/+3
| | | | llvm-svn: 58304
* fix test for latest changes in llvm asm representationNuno Lopes2008-09-301-4/+4
| | | | llvm-svn: 56842
* Fix function-attributes test case to not rely on llvm-gcc.Daniel Dunbar2008-09-271-5/+9
| | | | llvm-svn: 56734
* Set sext/zext on function result.Daniel Dunbar2008-09-051-0/+22
- <rdar://problem/6156739> llvm-svn: 55815
OpenPOWER on IntegriCloud