summaryrefslogtreecommitdiff
path: root/docs
Commit message (Collapse)AuthorAgeFilesLines
* [CLANG][BPF] change __builtin_preserve_access_index() signatureYonghong Song2019-09-191-1/+3
| | | | | | | | | | | | | | | | | | | | | | | The clang intrinsic __builtin_preserve_access_index() currently has signature: const void * __builtin_preserve_access_index(const void * ptr) This may cause compiler warning when: - parameter type is "volatile void *" or "const volatile void *", or - the assign-to type of the intrinsic does not have "const" qualifier. Further, this signature does not allow dereference of the builtin result pointer as it is a "const void *" type, which adds extra step for the user to do type casting. Let us change the signature to: PointerT __builtin_preserve_access_index(PointerT ptr) such that the result and argument types are the same. With this, directly dereferencing the builtin return value becomes possible. Differential Revision: https://reviews.llvm.org/D67734 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@372294 91177308-0d34-0410-b5e6-96231b3b80d8
* Recommit -r372180Erich Keane2019-09-181-30/+179
| | | | | | | | | | | | | | | | | | Commit message below, original caused the sphinx build bot to fail, this one should fix it. Create UsersManual section entitled 'Controlling Floating Point Behavior' Create a new section for documenting the floating point options. Move all the floating point options into this section, and add new entries for the floating point options that exist but weren't previously described in the UsersManual. Patch By: mibintc Differential Revision: https://reviews.llvm.org/D67517 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@372229 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "Create UsersManual section entitled 'Controlling Floating Point"Erich Keane2019-09-171-159/+30
| | | | | | This reverts commit a08d5a4b0ebd44dc64f41049ed4e97a3c6d31498. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@372185 91177308-0d34-0410-b5e6-96231b3b80d8
* Create UsersManual section entitled 'Controlling Floating PointErich Keane2019-09-171-30/+159
| | | | | | | | | | | | | | Behavior' Create a new section for documenting the floating point options. Move all the floating point options into this section, and add new entries for the floating point options that exist but weren't previously described in the UsersManual. Patch By: mibintc Differential Revision: https://reviews.llvm.org/D67517 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@372180 91177308-0d34-0410-b5e6-96231b3b80d8
* [ASTImporter] Add development internals docsGabor Marton2019-09-131-0/+489
| | | | | | | | | | | | Reviewers: a_sidorin, shafik, teemperor, gamesh411, balazske, dkrupp, a.sidorin Subscribers: rnkovacs, Szelethus, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D66336 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@371839 91177308-0d34-0410-b5e6-96231b3b80d8
* [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-09-132-0/+195
| | | | | | | | | | | | | | | | | | Summary: This patch introduces the skeleton of the constexpr interpreter, capable of evaluating a simple constexpr functions consisting of if statements. The interpreter is described in more detail in the RFC. Further patches will add more features. Reviewers: Bigcheese, jfb, rsmith Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64146 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@371834 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang-format] Add new style option IndentGotoLabelsPaul Hoad2019-09-121-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This option determines whether goto labels are indented according to scope. Setting this option to false causes goto labels to be flushed to the left. This is mostly copied from [[ http://lists.llvm.org/pipermail/cfe-dev/2015-September/045014.html | this patch ]] submitted by Christian Neukirchen that didn't make its way into trunk. ``` true: false: int f() { vs. int f() { if (foo()) { if (foo()) { label1: label1: bar(); bar(); } } label2: label2: return 1; return 1; } } ``` Reviewers: klimek, MyDeveloperDay Reviewed By: MyDeveloperDay Subscribers: cfe-commits Tags: #clang, #clang-tools-extra Patch by: tetsuo-cpp Differential Revision: https://reviews.llvm.org/D67037 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@371719 91177308-0d34-0410-b5e6-96231b3b80d8
* [X86] Enable -mprefer-vector-width=256 by default for Skylake-avx512 and ↵Craig Topper2019-09-111-2/+6
| | | | | | | | | | | | | | | | later Intel CPUs. AVX512 instructions can cause a frequency drop on these CPUs. This can negate the performance gains from using wider vectors. Enabling prefer-vector-width=256 will prevent generation of zmm registers unless explicit 512 bit operations are used in the original source code. I believe gcc and icc both do something similar to this by default. Differential Revision: https://reviews.llvm.org/D67259 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@371694 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP]Updated status page, NFC.Alexey Bataev2019-09-111-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@371627 91177308-0d34-0410-b5e6-96231b3b80d8
* [X86] Prevent passing vectors of __int128 as <X x i128> in llvm IRCraig Topper2019-09-061-1/+4
| | | | | | | | | | | | | As far as I can tell, gcc passes 256/512 bit vectors __int128 in memory. And passes a vector of 1 _int128 in an xmm register. The backend considers <X x i128> as an illegal type and will scalarize any arguments with that type. So we need to coerce the argument types in the frontend to match to avoid the illegal type. I'm restricting this to change to Linux and NetBSD based on the how similar ABI changes have been handled in the past. PS4, FreeBSD, and Darwin are unaffected. I've also added a new -fclang-abi-compat version to restore the old behavior. This issue was identified in PR42607. Though even with the types changed, we still seem to be doing some unnecessary stack realignment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@371169 91177308-0d34-0410-b5e6-96231b3b80d8
* [OpenMP][Docs] Provide implementation status detailsJohannes Doerfert2019-09-041-4/+132
| | | | | | | | | | | | | | | This adds a more fine-grained list of OpenMP features with their implementation status and associated reviews/commits. Reviewers: kkwli0, ABataev, RaviNarayanaswamy, gtbercea, Hahnfeld Subscribers: bollu, guansong, jfb, hfinkel, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64375 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370930 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "[Clang Interpreter] Initial patch for the constexpr interpreter"Roman Lebedev2019-09-042-195/+0
| | | | | | | | | Breaks BUILD_SHARED_LIBS build, introduces cycles in library dependency graphs. (clangInterp depends on clangAST which depends on clangInterp) This reverts r370839, which is an yet another recommit of D64146. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370874 91177308-0d34-0410-b5e6-96231b3b80d8
* [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-09-042-0/+195
| | | | | | | | | | | | | | | | | | Summary: This patch introduces the skeleton of the constexpr interpreter, capable of evaluating a simple constexpr functions consisting of if statements. The interpreter is described in more detail in the RFC. Further patches will add more features. Reviewers: Bigcheese, jfb, rsmith Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64146 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370839 91177308-0d34-0410-b5e6-96231b3b80d8
* [analyzer] Add a checker option to detect nested dead storesKristof Umann2019-09-031-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enables the users to specify an optional flag which would warn for more dead stores. Previously it ignored if the dead store happened e.g. in an if condition. if ((X = generate())) { // dead store to X } This patch introduces the `WarnForDeadNestedAssignments` option to the checker, which is `false` by default - so this change would not affect any previous users. I have updated the code, tests and the docs as well. If I missed something, tell me. I also ran the analysis on Clang which generated 14 more reports compared to the unmodified version. All of them seemed reasonable for me. Related previous patches: rGf224820b45c6847b91071da8d7ade59f373b96f3 Reviewers: NoQ, krememek, Szelethus, baloghadamsoftware Reviewed By: Szelethus Patch by Balázs Benics! Differential Revision: https://reviews.llvm.org/D66733 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370767 91177308-0d34-0410-b5e6-96231b3b80d8
* ThinLTO: Document the option BOOTSTRAP_LLVM_ENABLE_LTOSylvestre Ledru2019-09-021-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370671 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-09-022-195/+0
| | | | | | This reverts r370636 (git commit 8327fed9475a14c3376b4860c75370c730e08f33) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370642 91177308-0d34-0410-b5e6-96231b3b80d8
* [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-09-022-0/+195
| | | | | | | | | | | | | | | | | | Summary: This patch introduces the skeleton of the constexpr interpreter, capable of evaluating a simple constexpr functions consisting of if statements. The interpreter is described in more detail in the RFC. Further patches will add more features. Reviewers: Bigcheese, jfb, rsmith Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64146 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370636 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-08-312-195/+0
| | | | | | This reverts r370584 (git commit afcb3de117265a69d21e5673356e925a454d7d02) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370588 91177308-0d34-0410-b5e6-96231b3b80d8
* [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-08-312-0/+195
| | | | | | | | | | | | | | | | | | Summary: This patch introduces the skeleton of the constexpr interpreter, capable of evaluating a simple constexpr functions consisting of if statements. The interpreter is described in more detail in the RFC. Further patches will add more features. Reviewers: Bigcheese, jfb, rsmith Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64146 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370584 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-08-302-195/+0
| | | | | | This reverts r370531 (git commit d4c1002e0bbbbab50f6891cdd2f5bd3a8f3a3584) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370535 91177308-0d34-0410-b5e6-96231b3b80d8
* [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-08-302-0/+195
| | | | | | | | | | | | | | | | | | Summary: This patch introduces the skeleton of the constexpr interpreter, capable of evaluating a simple constexpr functions consisting of if statements. The interpreter is described in more detail in the RFC. Further patches will add more features. Reviewers: Bigcheese, jfb, rsmith Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64146 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370531 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-08-301-194/+0
| | | | | | This reverts r370476 (git commit a5590950549719d0d9ea69ed164b0c8c0f4e02e6) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370481 91177308-0d34-0410-b5e6-96231b3b80d8
* [Clang Interpreter] Initial patch for the constexpr interpreterNandor Licker2019-08-301-0/+194
| | | | | | | | | | | | | | | | | | Summary: This patch introduces the skeleton of the constexpr interpreter, capable of evaluating a simple constexpr functions consisting of if statements. The interpreter is described in more detail in the RFC. Further patches will add more features. Reviewers: Bigcheese, jfb, rsmith Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64146 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370476 91177308-0d34-0410-b5e6-96231b3b80d8
* [Tooling] Migrated APIs that take ownership of objects to unique_ptrDmitri Gribenko2019-08-303-2/+8
| | | | | | | | | | Subscribers: jkorous, arphaman, kadircet, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D66960 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370451 91177308-0d34-0410-b5e6-96231b3b80d8
* [X86] Remove what little support we had for MPXCraig Topper2019-08-291-0/+4
| | | | | | | | | | | | | | | -Deprecate -mmpx and -mno-mpx command line options -Remove CPUID detection of mpx for -march=native -Remove MPX from all CPUs -Remove MPX preprocessor define I've left the "mpx" string in the backend so we don't fail on old IR, but its not connected to anything. gcc has also deprecated these command line options. https://www.phoronix.com/scan.php?page=news_item&px=GCC-Patch-To-Drop-MPX Differential Revision: https://reviews.llvm.org/D66669 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370393 91177308-0d34-0410-b5e6-96231b3b80d8
* [ReleaseNotes] MemorySanitizer support of ASLR on FreeBSDDavid Carlier2019-08-271-0/+3
| | | | | | | | | | Reviewers: sylvestre.ledru, kcc Reviewed By: sylvestre.ledru Differential Revision: https://reviews.llvm.org/D66792 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370035 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix -dA flag, it is not a preprocessor flag.Erich Keane2019-08-261-3/+1
| | | | | | | | | -dA was in the d_group, which is a preprocessor state dumping group. However -dA is a debug flag to cause a verbose asm. It was already implemented to do the same thing as -fverbose-asm, so make it just be an alias. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369926 91177308-0d34-0410-b5e6-96231b3b80d8
* [Docs][OpenCL] Several corrections to C++ for OpenCLAnastasia Stulova2019-08-232-63/+74
| | | | | | | | Differential Revision:https://reviews.llvm.org/D64418 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369749 91177308-0d34-0410-b5e6-96231b3b80d8
* Improve the documentation for OpenCL vector types.Aaron Ballman2019-08-221-3/+3
| | | | | | This fixes some minor grammatical issues I noticed when reading the docs, and changes the recommended feature testing approach to use __has_attribute instead of __has_extension. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369687 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r369402 "win: Enable /Zc:twoPhase by default if targeting MSVC 2017 ↵Hans Wennborg2019-08-221-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | update 3 or newer" This broke compiling some ASan tests with never versions of MSVC/the Win SDK, see https://crbug.com/996675 > MSVC 2017 update 3 (_MSC_VER 1911) enables /Zc:twoPhase by default, and > so should clang-cl: > https://docs.microsoft.com/en-us/cpp/build/reference/zc-twophase > > clang-cl takes the MSVC version it emulates from the -fmsc-version flag, > or if that's not passed it tries to check what the installed version of > MSVC is and uses that, and failing that it uses a default version that's > currently 1911. So this changes the default if no -fmsc-version flag is > passed and no installed MSVC is detected. (It also changes the default > if -fmsc-version is passed or MSVC is detected, and either indicates > _MSC_VER >= 1911.) > > As mentioned in the MSDN article, the Windows SDK header files in > version 10.0.15063.0 (Creators Update or Redstone 2) and earlier > versions do not work correctly with /Zc:twoPhase. If you need to use > these old SDKs with a new clang-cl, explicitly pass /Zc:twoPhase- to get > the old behavior. > > Fixes PR43032. > > Differential Revision: https://reviews.llvm.org/D66394 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369647 91177308-0d34-0410-b5e6-96231b3b80d8
* [PPC Docs] Remove duplicate info about __builtin_setrnd()David Zarzycki2019-08-211-49/+1
| | | | | | | This looks like a combination of a copy-and-paste (and paste and paste) error and a commit without reviewing the diff first error. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369496 91177308-0d34-0410-b5e6-96231b3b80d8
* win: Enable /Zc:twoPhase by default if targeting MSVC 2017 update 3 or newerNico Weber2019-08-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | MSVC 2017 update 3 (_MSC_VER 1911) enables /Zc:twoPhase by default, and so should clang-cl: https://docs.microsoft.com/en-us/cpp/build/reference/zc-twophase clang-cl takes the MSVC version it emulates from the -fmsc-version flag, or if that's not passed it tries to check what the installed version of MSVC is and uses that, and failing that it uses a default version that's currently 1911. So this changes the default if no -fmsc-version flag is passed and no installed MSVC is detected. (It also changes the default if -fmsc-version is passed or MSVC is detected, and either indicates _MSC_VER >= 1911.) As mentioned in the MSDN article, the Windows SDK header files in version 10.0.15063.0 (Creators Update or Redstone 2) and earlier versions do not work correctly with /Zc:twoPhase. If you need to use these old SDKs with a new clang-cl, explicitly pass /Zc:twoPhase- to get the old behavior. Fixes PR43032. Differential Revision: https://reviews.llvm.org/D66394 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369402 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang-format] Fix a bug that joins template closer and =Owen Pan2019-08-181-2/+2
| | | | | | | | | | Also fixes the documentation for SpaceBeforeAssignmentOperators. See discussions at https://reviews.llvm.org/D66332 Differential Revision: https://reviews.llvm.org/D66384 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369214 91177308-0d34-0410-b5e6-96231b3b80d8
* [doc] Fix some minor formatting issues.Richard Smith2019-08-161-7/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369161 91177308-0d34-0410-b5e6-96231b3b80d8
* [Test Commit] Fix typo in diagtool.rstTroy A. Johnson2019-08-161-1/+1
| | | | | | Test commit after obtaining commit access. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369148 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix typos in LibASTImporter.rstGabor Marton2019-08-161-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369099 91177308-0d34-0410-b5e6-96231b3b80d8
* [analyzer] Add docs for cplusplus.InnerPointerKristof Umann2019-08-151-2/+27
| | | | | | Differential Revision: https://reviews.llvm.org/D60281 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368979 91177308-0d34-0410-b5e6-96231b3b80d8
* Document clang-cpp in the release notes for clangChris Bieneman2019-08-141-1/+9
| | | | | | This patch adds a line in the release notes about the new clang-cpp library and the CMake option to force clang to link against it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368874 91177308-0d34-0410-b5e6-96231b3b80d8
* Add __has_builtin support for builtin function-like type traits.Richard Smith2019-08-141-65/+180
| | | | | | | | | | | | | | | | | | | | | | | | Summary: Previously __has_builtin(__builtin_*) would return false for __builtin_*s that we modeled as keywords rather than as functions (because they take type arguments). With this patch, all builtins that are called with function-call-like syntax return true from __has_builtin (covering __builtin_* and also the __is_* and __has_* type traits and the handful of similar builtins without such a prefix). Update the documentation on __has_builtin and on type traits to match. While doing this I noticed the type trait documentation was out of date and incomplete; that's fixed here too. Reviewers: aaron.ballman Subscribers: jfb, kristina, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D66100 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368785 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang] Update isDerivedFrom to support Objective-C classes 🔍Stephane Moore2019-08-121-9/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This change updates `isDerivedFrom` to support Objective-C classes by converting it to a polymorphic matcher. Notes: The matching behavior for Objective-C classes is modeled to match the behavior of `isDerivedFrom` with C++ classes. To that effect, `isDerivedFrom` matches aliased types of derived Objective-C classes, including compatibility aliases. To achieve this, the AST visitor has been updated to map compatibility aliases to their underlying Objective-C class. `isSameOrDerivedFrom` also provides similar behaviors for C++ and Objective-C classes. The behavior that `cxxRecordDecl(isSameOrDerivedFrom("X"))` does not match `class Y {}; typedef Y X;` is mirrored for Objective-C in that `objcInterfaceDecl(isSameOrDerivedFrom("X"))` does not match either `@interface Y @end typedef Y X;` or `@interface Y @end @compatibility_alias X Y;`. Test Notes: Ran clang unit tests. Reviewers: aaron.ballman, jordan_rose, rjmccall, klimek, alexfh, gribozavr Reviewed By: aaron.ballman, gribozavr Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D60543 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368632 91177308-0d34-0410-b5e6-96231b3b80d8
* [CrossTU] User docs: remove temporary limiation with macro expansionGabor Marton2019-08-121-9/+0
| | | | | | D65064, D64635, D64638 pathces solve the issue with macor expansion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368562 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang-format] Expand AllowShortBlocksOnASingleLine for WebKitOwen Pan2019-08-111-3/+35
| | | | | | | | See PR40840 Differential Revision: https://reviews.llvm.org/D66059 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368539 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang-format] Add SpaceInEmptyBlock option for WebKitOwen Pan2019-08-101-32/+41
| | | | | | | | See PR40840 Differential Revision: https://reviews.llvm.org/D65925 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368507 91177308-0d34-0410-b5e6-96231b3b80d8
* cfi-icall: Allow the jump table to be optionally made non-canonical.Peter Collingbourne2019-08-091-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The default behavior of Clang's indirect function call checker will replace the address of each CFI-checked function in the output file's symbol table with the address of a jump table entry which will pass CFI checks. We refer to this as making the jump table `canonical`. This property allows code that was not compiled with ``-fsanitize=cfi-icall`` to take a CFI-valid address of a function, but it comes with a couple of caveats that are especially relevant for users of cross-DSO CFI: - There is a performance and code size overhead associated with each exported function, because each such function must have an associated jump table entry, which must be emitted even in the common case where the function is never address-taken anywhere in the program, and must be used even for direct calls between DSOs, in addition to the PLT overhead. - There is no good way to take a CFI-valid address of a function written in assembly or a language not supported by Clang. The reason is that the code generator would need to insert a jump table in order to form a CFI-valid address for assembly functions, but there is no way in general for the code generator to determine the language of the function. This may be possible with LTO in the intra-DSO case, but in the cross-DSO case the only information available is the function declaration. One possible solution is to add a C wrapper for each assembly function, but these wrappers can present a significant maintenance burden for heavy users of assembly in addition to adding runtime overhead. For these reasons, we provide the option of making the jump table non-canonical with the flag ``-fno-sanitize-cfi-canonical-jump-tables``. When the jump table is made non-canonical, symbol table entries point directly to the function body. Any instances of a function's address being taken in C will be replaced with a jump table address. This scheme does have its own caveats, however. It does end up breaking function address equality more aggressively than the default behavior, especially in cross-DSO mode which normally preserves function address equality entirely. Furthermore, it is occasionally necessary for code not compiled with ``-fsanitize=cfi-icall`` to take a function address that is valid for CFI. For example, this is necessary when a function's address is taken by assembly code and then called by CFI-checking C code. The ``__attribute__((cfi_jump_table_canonical))`` attribute may be used to make the jump table entry of a specific function canonical so that the external code will end up taking a address for the function that will pass CFI checks. Fixes PR41972. Differential Revision: https://reviews.llvm.org/D65629 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368495 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang] Update `ignoringElidableConstructorCall` matcher to ignore ↵Yitzhak Mandelbaum2019-08-081-11/+10
| | | | | | | | | | | | | | | | | | | `ExprWithCleanups`. Summary: The `ExprWithCleanups` node is added to the AST along with the elidable CXXConstructExpr. If it is the outermost node of the node being matched, ignore it as well. Reviewers: gribozavr Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65944 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368319 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang][NFC] Fix typo in matcher commentYitzhak Mandelbaum2019-08-071-1/+1
| | | | | | Also updates corresponding html doc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368188 91177308-0d34-0410-b5e6-96231b3b80d8
* Add User docs for ASTImporterGabor Marton2019-08-062-0/+614
| | | | | | | | | | | | | | | | | Summary: This document includes the description of the ASTImporter from the user/client perspective. A subsequent patch will describe the development internals. Reviewers: a_sidorin, shafik, gamesh411, balazske, a.sidorin Subscribers: rnkovacs, dkrupp, arphaman, Szelethus, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65573 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368009 91177308-0d34-0410-b5e6-96231b3b80d8
* [docs] don't use :option: for Wall WextraJF Bastien2019-08-051-7/+7
| | | | | | The bots are sad that they're not documented. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@367918 91177308-0d34-0410-b5e6-96231b3b80d8
* [docs] don't use :option: for C++ compatJF Bastien2019-08-051-2/+2
| | | | | | The bots are sad that they're not documented. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@367914 91177308-0d34-0410-b5e6-96231b3b80d8
* [docs] document -Weveything more bettererJF Bastien2019-08-051-7/+18
| | | | | | | | | | | | Reviewers: aaron.ballman Subscribers: jkorous, dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65706 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@367889 91177308-0d34-0410-b5e6-96231b3b80d8