Commit Graph

1262 Commits

Author SHA1 Message Date
John McCall c41c63fbf8 Add support for __builtin_{add,sub,mul}_overflow.
Patch by David Grayson!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251651 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-29 20:48:01 +00:00
Daniel Jasper 6e0ab6e499 clang-format: Add an additional value to AlignAfterOpenBracket: AlwaysBreak.
Summary:
If this option is set, clang-format will always insert a line wrap, e.g.
before the first parameter of a function call unless all parameters fit
on the same line. This obviates the need to make a decision on the
alignment itself.

Use this style for Google's JavaScript style and add some minor tweaks
to correctly handle nested blocks etc. with it. Don't use this option
for for/while loops.

Reviewers: klimek

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D14104

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251405 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-27 12:38:37 +00:00
Diego Novillo cb8cbe7091 Sample Profiles - Fix location of binary encoding documentation. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250705 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-19 15:53:17 +00:00
Saleem Abdulrasool 9255144d53 docs: remote stale refs
Since the attribute documentation is now auto-generated, the previous references
are no longer valid.  This prevented the docs build from completing
successfully.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250674 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-19 01:24:08 +00:00
Nico Weber 1457d484d1 Update `clang-format -help` output in clang-format docs.
-assume-filename, -fallback-style, and -sort-includes are new.  (They're also
longer than the previous options, so all descriptions shift over by some amount,
making this diff look larger than it is.)

It looks like someone renamed "General options" to "Generic Options" too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250672 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-19 01:08:30 +00:00
Eric Fiselier 6af718e79b Add an AST node matcher for TemplateTypeParmDecl objects.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250602 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-17 02:34:44 +00:00
Diego Novillo a1c6ceaff0 Sample profiles - Update text profile documentation.
There's been some changes to the text encoding for sample profiles. This
updates the documentation and an example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250310 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-14 18:37:39 +00:00
Matthias Gehre 135d049ab2 Add decayedType and hasDecayedType AST matchers
Summary: Add decayedType and hasDecayedType AST matchers

Reviewers: klimek

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D13639

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250114 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 21:46:07 +00:00
Daniel Jasper 895dbe3435 clang-format: Hopefully fix code blocks in docs.
Otherwise I will have to install sphinx ;)..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249542 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-07 13:02:45 +00:00
Daniel Jasper c8ebad79a5 clang-format: Add empty line before code-blocks in Docs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249394 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-06 12:11:51 +00:00
Daniel Jasper fa119ac183 clang-format: Make IncludeCategories configurable in .clang-format file.
This was made much easier by introducing an IncludeCategory struct to
replace the previously used std::pair.

Also, cleaned up documentation and added examples.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249392 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-06 11:54:18 +00:00
Aaron Ballman 9fc9d8db3d Adding an AST node matcher for NonTypeTemplateParmDecl objects.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249341 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 19:44:42 +00:00
Aaron Ballman 1082a41a51 Adding a narrowing AST matcher for FunctionDecl::isVariadic(), plus tests and documentation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249321 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 14:41:27 +00:00
Daniel Jasper 1e2a6598a8 clang-format: Small doc fix.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249312 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 13:30:42 +00:00
Daniel Jasper da35e1f915 clang-format: Remove sentence in option cost threshold that weakens the
statement. Specifically, we don't want people that have already written
a patch to just write a style guide for their 1-person project.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249290 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 07:36:40 +00:00
Daniel Jasper fb8df166f4 clang-format: Document threshold for adding new options.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249289 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 07:24:55 +00:00
Daniel Jasper 6cc91d4e13 clang-format: Add a new brace style "custom" as well as flags to
control the individual braces. The existing choices for brace wrapping
are now merely presets for the different flags that get expanded upon
calling the reformat function.

All presets have been chose to keep the existing formatting, so there
shouldn't be any difference in formatting behavior.

Also change the dump_format_style.py to properly document the nested
structs that are used to keep these flags discoverable among all the
configuration flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248802 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-29 14:57:55 +00:00
Adrian Prantl 4bf05a4d49 Fix a typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247895 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-17 15:58:54 +00:00
Aaron Ballman 37c860b7d0 Update the 3.8 release notes with the breaking change information regarding AST matchers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247887 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-17 13:47:22 +00:00
Aaron Ballman 5d6b9bd99d Rename AST node matchers to match the AST node names directly. Part of this rename also splits recordDecl() (which used to match CXXRecordDecl) into recordDecl() (that matches RecordDecl) and cxxRecordDecl (that matches CXXRecordDecl). Also adds isStruct(), isUnion(), and isClass() narrowing matchers for RecordDecl objects.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247885 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-17 13:30:52 +00:00
Naomi Musgrave 616618288d Updating docs for MSan to describe poison-in-dtor.
Summary:
Describe the compile and runtime flags to enable MemorySanitizer
detection of use-after-destroy.

Reviewers: eugenis

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D12914

Revise doc description of use-after-dtor.

Change wording to specify memory no longer readable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247871 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-17 00:10:59 +00:00
Aaron Ballman 9912604fc7 Fixed HasDeclarationMatcher to properly convert all types into decls where possible. Added objcObjectPointerType(), objcInterfaceDecl(), templateTypeParmType(), injectedClassNameType(), and unresolvedUsingTypenameDecl(). Updated documentation for pointerType() to call out that it does not match ObjCObjectPointerType types. Changed pointsTo() to handle ObjCObjectPointerType as well as PointerType.
While this may seem like a lot of unrelated changes, they all relate back to fixing HasDeclarationMatcher.

This now allows us to write a matcher like:

varDecl(hasType(namedDecl(hasName("Foo"))))

that matches code using typedefs, objc interfaces, template type parameters, injected class names, or unresolved using typenames.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247404 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-11 11:51:24 +00:00
Michael Zolotukhin 1ceb384b7b Docs: Document __builtin_nontemporal_load and __builtin_nontemporal_store.
Summary:
In r247104 I added the builtins for generating non-temporal memory operations,
but now I realized that they lack documentation. This patch adds some.

Differential Revision: http://reviews.llvm.org/D12785

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247374 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-11 02:01:15 +00:00
Michael Zolotukhin 9d8f512723 Docs: Add missing new line before a list.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247360 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 23:56:10 +00:00
Peter Collingbourne f29b6351df CFI: Introduce -fsanitize=cfi-icall flag.
This flag causes the compiler to emit bit set entries for functions as well
as runtime bitset checks at indirect call sites. Depends on the new function
bitset mechanism.

Differential Revision: http://reviews.llvm.org/D11857

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247238 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 02:17:40 +00:00
Sanjay Patel a43b1f18fd add __builtin_unpredictable and convert to metadata
This patch depends on r246688 (D12341).

The goal is to make LLVM generate different code for these functions for a target that
has cheap branches (see PR23827 for more details):

int foo();

int normal(int x, int y, int z) {
   if (x != 0 && y != 0) return foo();
   return 1;
}

int crazy(int x, int y) {
   if (__builtin_unpredictable(x != 0 && y != 0)) return foo();
   return 1;
}

Differential Revision: http://reviews.llvm.org/D12458



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246699 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 20:01:30 +00:00
Nico Weber dcea4e4553 Make trunk release notes point to 3.7, not 3.6
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246589 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-01 21:13:14 +00:00
Aaron Ballman 6223b3f989 Updating the AST matcher documentation with a new entry; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246324 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-28 19:39:56 +00:00
Aaron Ballman e80122dbc3 Adding an AST matcher for namespaceAliasDecl.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246322 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-28 19:39:21 +00:00
Adrian Prantl 7bbf57e36a Add a -gmodules option to the driver and a -dwarf-ext-refs to cc1
to enable the use of external type references in the debug info
(a.k.a. module debugging).

The driver expands -gmodules to "-g -fmodule-format=obj -dwarf-ext-refs"
and passes that to cc1. All this does at the moment is set a flag
codegenopts.

http://reviews.llvm.org/D11958

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246192 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-27 19:46:20 +00:00
Gabor Horvath f96ee0e149 [Static Analyzer] Checks to catch nullability related issues.
Differential Revision: http://reviews.llvm.org/D11468


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246105 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-26 23:17:43 +00:00
Alexey Bataev cbaa17c6bc [OPENMP] Info about OpenMP Support in Users Manual, NFC.
Differential Revision: http://reviews.llvm.org/D12152


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245823 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-24 05:31:10 +00:00
Aaron Ballman 67775378ed Add AST narrowing matchers for inline and anonymous namespaces. Since the inline keyword can also be specified on a FunctionDecl, this is a polymorphic matcher.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245337 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-18 19:55:20 +00:00
Hans Wennborg 191ca84311 Doxygen: add build option to use svg instead of png files for graphs
Differential Revision: http://reviews.llvm.org/D11994

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245259 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-17 23:38:56 +00:00
Manuel Klimek ee3c24fa92 Fix AST matcher documentation.
Fix a bug in the matcher docs where callExpr(on(...)) was in the examples,
but didn't work (on() only works for memberCallExpr).

Fix a bug in the doc dump script that was introduced in r231575 when
removing a regexp capture without adapting the code that uses the
captures.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245040 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 11:47:51 +00:00
Hans Wennborg daa5b95b01 Docs: keep copyright years up-to-date
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244797 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-12 19:45:01 +00:00
Hans Wennborg 0fda52a6d5 Docs: update clang-cl command-line documentation
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244794 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-12 19:35:01 +00:00
Hans Wennborg ba4c8c85a8 ReleaseNotes: Small version nbr fix
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244761 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-12 16:40:42 +00:00
Aaron Ballman eb92309f04 Add missing documentation for conversionDecl; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244669 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-11 21:12:46 +00:00
Aaron Ballman ea8e04cc0d Add a polymorphic AST matcher for testing whether a constructor or a conversion declaration is marked as explicit or not.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244666 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-11 21:09:52 +00:00
Aaron Ballman 2356ddbded Add an AST matcher to match member intializers of a CXXCtorInitializer.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244662 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-11 20:42:00 +00:00
Nick Lewycky 1525c826b0 Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244490 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-10 19:54:11 +00:00
Mark Heffernan 1476822ded Add new llvm.loop.unroll.enable metadata for use with "#pragma unroll".
This change adds the new unroll metadata "llvm.loop.unroll.enable" which directs
the optimizer to unroll a loop fully if the trip count is known at compile time, and
unroll partially if the trip count is not known at compile time. This differs from
"llvm.loop.unroll.full" which explicitly does not unroll a loop if the trip count is not
known at compile time

With this change "#pragma unroll" generates "llvm.loop.unroll.enable" rather than
"llvm.loop.unroll.full" metadata. This changes the semantics of "#pragma unroll" slightly
to mean "unroll aggressively (fully or partially)" rather than "unroll fully or not at all".

The motivating example for this change was some internal code with a loop marked
with "#pragma unroll" which only sometimes had a compile-time trip count depending
on template magic. When the trip count was a compile-time constant, everything works
as expected and the loop is fully unrolled. However, when the trip count was not a
compile-time constant the "#pragma unroll" explicitly disabled unrolling of the loop(!).
Removing "#pragma unroll" caused the loop to be unrolled partially which was desirable
from a performance perspective.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244467 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-10 17:29:39 +00:00
Roman Kashitsyn 8aef53c9eb Add WebKit brace style configuration option.
Summary:
Add brace style `BS_WebKit` as described on https://www.webkit.org/coding/coding-style.html:

* Function definitions: place each brace on its own line.
* Other braces: place the open brace on the line preceding the code block; place the close brace on its own line.

Set brace style used in `getWebKitStyle()` to the newly added `BS_WebKit`.

Reviewers: djasper, klimek

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D11837

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244446 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-10 13:43:19 +00:00
Diego Novillo 41544940b4 Add flags to disable profile generation.
This patch adds flags -fno-profile-instr-generate and
-fno-profile-instr-use, and the GCC aliases -fno-profile-generate and
-fno-profile-use.

These flags are used in situations where users need to disable profile
generation or use for specific files in a build, without affecting other
files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244153 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 21:49:51 +00:00
James Y Knight 7b8a164593 Add missing atomic libcall support.
Support for emitting libcalls for __atomic_fetch_nand and
__atomic_{add,sub,and,or,xor,nand}_fetch was missing; add it, and some
test cases.

Differential Revision: http://reviews.llvm.org/D10847

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244063 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 16:57:36 +00:00
Aaron Ballman ee3af39c91 Add AST matchers for narrowing constructors that are default, copy, or move constructors, as well as functionality to determine whether a ctor initializer is a base initializer.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244036 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 12:11:30 +00:00
Tanya Lattner 0103b5324e Update mailing list references to lists.llvm.org
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244000 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 03:55:23 +00:00
Douglas Katzman f4e2ba74bd Grammar: Don't imply that a program wouldn't want a person as its output.
(Because, hey, who wouldn't?)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243901 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-03 20:41:31 +00:00
Kostya Serebryany 3a58d1daa0 [libFuzzer] minimal documentation on data-flow-guided fuzzing
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243793 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-31 21:48:10 +00:00