summaryrefslogtreecommitdiff
path: root/contrib/llvm-project/clang/lib/AST
Commit message (Collapse)AuthorAgeFilesLines
* Merge commit e09107ab8 from llvm git (by Raul Tambre):Dimitry Andric2020-09-171-24/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [Sema] Introduce BuiltinAttr, per-declaration builtin-ness Instead of relying on whether a certain identifier is a builtin, introduce BuiltinAttr to specify a declaration as having builtin semantics. This fixes incompatible redeclarations of builtins, as reverting the identifier as being builtin due to one incompatible redeclaration would have broken rest of the builtin calls. Mostly-compatible redeclarations of builtins also no longer have builtin semantics. They don't call the builtin nor inherit their attributes. A long-standing FIXME regarding builtins inside a namespace enclosed in extern "C" not being recognized is also addressed. Due to the more correct handling attributes for builtin functions are added in more places, resulting in more useful warnings. Tests are updated to reflect that. Intrinsics without an inline definition in intrin.h had `inline` and `static` removed as they had no effect and caused them to no longer be recognized as builtins otherwise. A pthread_create() related test is XFAIL-ed, as it relied on it being recognized as a builtin based on its name. The builtin declaration syntax is too restrictive and doesn't allow custom structs, function pointers, etc. It seems to be the only case and fixing this would require reworking the current builtin syntax, so this seems acceptable. Fixes PR45410. Reviewed By: rsmith, yutsumi Differential Revision: https://reviews.llvm.org/D77491 This should fix 'Assertion failed: (i < getNumParams() && "Illegal param #"), function getParamDecl, file /usr/src/contrib/llvm-project/clang/include/clang/AST/Decl.h, line 2430' when building the graphics/pgplot port. Note that there may also have been other ports which triggered this assertion, if they redeclare standard functions with incompatible arguments. Reported by: zeising MFC after: 6 weeks X-MFC-With: r364284 Notes: svn path=/head/; revision=365848
* Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmpDimitry Andric2020-09-163-1/+121
| | | | | | | | | | release/11.x llvmorg-11.0.0-rc2-91-g6e042866c30. MFC after: 6 weeks X-MFC-With: r364284 Notes: svn path=/head/; revision=365807
* Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmpDimitry Andric2020-08-241-2/+1
| | | | | | | | | | release/11.x llvmorg-11.0.0-rc2-0-g414f32a9e86. MFC after: 6 weeks X-MFC-With: r364284 Notes: svn path=/head/; revision=364718
* Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmpDimitry Andric2020-08-151-4/+14
| | | | | | | release/11.x llvmorg-11.0.0-rc1-47-gff47911ddfc. Notes: svn path=/projects/clang1100-import/; revision=364253
* Reapply r360852 (by cem):Dimitry Andric2020-08-061-2/+2
| | | | | | | | | | | | | clang: Reject %n for __attribute__((format(__freebsd_kprintf__))) A follow-up to r360849. Reported by: imp Reviewed by: emaste, imp Differential Revision: https://reviews.freebsd.org/D24786 Notes: svn path=/projects/clang1100-import/; revision=363980
* r356104 | jhibbits | 2019-12-27 00:06:28 +0100 (Fri, 27 Dec 2019) | 25 linesDimitry Andric2020-08-061-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [PowerPC] enable atomic.c in compiler_rt and do not check and forces lock/lock_free decisions in compiled time Summary: Enables atomic.c in compiler_rt and forces clang to not emit a call for runtime decision about lock/lock_free. At compiling time, if clang can't decide if atomic operation can be lock free, it emits calls to external functions like `__atomic_is_lock_free`, `__c11_atomic_is_lock_free` and `__atomic_always_lock_free`, postponing decision to a runtime check. According to LLVM code documentation, the mechanism exists due to differences between x86_64 processors that can't be decided at runtime. On PowerPC and PowerPCSPE (32 bits), we already know in advance it can't be lock free, so we force the decision at compile time and avoid having to implement it in an external library. This patch was made after 32 bit users testing the PowePC32 bit ISO reported llvm could not be compiled with in-base llvm due to `__atomic_load8` not implemented. Submitted by: alfredo.junior_eldorado.org.br Reviewed by: jhibbits, dim Differential Revision: https://reviews.freebsd.org/D22549 Notes: svn path=/projects/clang1100-import/; revision=363977
* Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmpDimitry Andric2020-07-311-2/+1
| | | | | | | release/11.x llvmorg-11-init-20933-g3c1fca803bc. Notes: svn path=/projects/clang1100-import/; revision=363743
* Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmpDimitry Andric2020-07-3168-3690/+7345
| | | | | | | | | | | | master 2e10b7a39b9, the last commit before the llvmorg-12-init tag, from which release/11.x was branched. Note that for now, I rolled back all our local changes to make merging easier, and I will reapply the still-relevant ones after updating to 11.0.0-rc1. Notes: svn path=/projects/clang1100-import/; revision=363742
* Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmpDimitry Andric2020-05-233-3/+27
| | | | | | | | | llvmorg-10.0.1-rc1-0-gf79cd71e145 (aka 10.0.1 rc1). MFC after: 3 weeks Notes: svn path=/head/; revision=361410
* clang: Reject %n for __attribute__((format(__freebsd_kprintf__)))Conrad Meyer2020-05-091-2/+2
| | | | | | | | | | | | A follow-up to r360849. Reported by: imp Reviewed by: emaste, imp X-MFC-With: r360849 Differential Revision: https://reviews.freebsd.org/D24786 Notes: svn path=/head/; revision=360852
* Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmpDimitry Andric2020-03-181-1/+1
| | | | | | | | | | | llvmorg-10.0.0-rc4-5-g52c365aa9ca. The actual release should follow Real Soon Now. PR: 244251 MFC after: 6 weeks Notes: svn path=/head/; revision=359082
* Merge ^/vendor/llvm-project/release-10.x up to its last change (upstreamDimitry Andric2020-03-051-2/+3
| | | | | | | commit llvmorg-10.0.0-rc3-1-gc290cb61fdc), and bump versions. Notes: svn path=/projects/clang1000-import/; revision=358682
* Merge ^/vendor/llvm-project/release-10.x up to its last change (upstreamDimitry Andric2020-02-157-29/+89
| | | | | | | | commit llvmorg-10.0.0-rc2-0-g90c78073f73), bump versions, and update build glue. Notes: svn path=/projects/clang1000-import/; revision=357964
* Merge ^/vendor/lvm-project/release-10.x up to its last change (upstreamDimitry Andric2020-01-2422-178/+644
| | | | | | | commit llvmorg-10-init-17538-gd11abddb32f). Notes: svn path=/projects/clang1000-import/; revision=357099
* Merge ^/vendor/lvm-project/master up to its last change (upstream commitDimitry Andric2020-01-2443-911/+2290
| | | | | | | e26a78e70), and resolve conflicts. Notes: svn path=/projects/clang1000-import/; revision=357095
* Merge ^/vendor/clang/dist up to its last change, and resolve conflicts.Dimitry Andric2020-01-2290-1452/+12293
| | | | Notes: svn path=/projects/clang1000-import/; revision=356998
* [PowerPC] enable atomic.c in compiler_rt and do not check and forcesJustin Hibbits2019-12-261-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | lock/lock_free decisions in compiled time Summary: Enables atomic.c in compiler_rt and forces clang to not emit a call for runtime decision about lock/lock_free. At compiling time, if clang can't decide if atomic operation can be lock free, it emits calls to external functions like `__atomic_is_lock_free`, `__c11_atomic_is_lock_free` and `__atomic_always_lock_free`, postponing decision to a runtime check. According to LLVM code documentation, the mechanism exists due to differences between x86_64 processors that can't be decided at runtime. On PowerPC and PowerPCSPE (32 bits), we already know in advance it can't be lock free, so we force the decision at compile time and avoid having to implement it in an external library. This patch was made after 32 bit users testing the PowePC32 bit ISO reported llvm could not be compiled with in-base llvm due to `__atomic_load8` not implemented. Submitted by: alfredo.junior_eldorado.org.br Reviewed by: jhibbits, dim Differential Revision: https://reviews.freebsd.org/D22549 Notes: svn path=/head/; revision=356104
* Move all sources from the llvm project into contrib/llvm-project.Dimitry Andric2019-12-2076-0/+111263
This uses the new layout of the upstream repository, which was recently migrated to GitHub, and converted into a "monorepo". That is, most of the earlier separate sub-projects with their own branches and tags were consolidated into one top-level directory, and are now branched and tagged together. Updating the vendor area to match this layout is next. Notes: svn path=/head/; revision=355940