summaryrefslogtreecommitdiffstats
path: root/clang/utils
Commit message (Collapse)AuthorAgeFilesLines
* Fix -Wextra-semi warnings.Hans Wennborg2015-07-221-1/+1
| | | | | | | | Patch by Eugene Zelenko! Differential Revision: http://reviews.llvm.org/D11401 llvm-svn: 242931
* Refactor TableGen backend for ClangAttrEmitter to avoid duplication.Bob Wilson2015-07-201-89/+63
| | | | | | | | GenerateHasAttrSpellingStringSwitch and GenerateTargetRequirements had duplicated code to check the conditions for target-specific attributes. Refactor the duplicated code into a separate function. NFC. llvm-svn: 242731
* Ignore the "novtable" declspec when not using the Microsoft C++ ABI.Bob Wilson2015-07-201-3/+36
| | | | | | | | | | | | | | Clang used to silently ignore __declspec(novtable). It is implemented now, but leaving the vtable uninitialized does not work when using the Itanium ABI, where the class layout for complex class hierarchies is stored in the vtable. It might be possible to honor the novtable attribute in some simple cases and either report an error or ignore it in more complex situations, but it’s not clear if that would be worthwhile. There is also value in having a simple and predictable behavior, so this changes clang to simply ignore novtable when not using the Microsoft C++ ABI. llvm-svn: 242730
* [Static Analyzer] Make the paths relative from the project root when ↵Gabor Horvath2015-07-082-4/+17
| | | | | | generating reference results in the test suite. llvm-svn: 241706
* [TableGen] Change a couple methods to return an ArrayRef instead of a const ↵Craig Topper2015-07-061-2/+2
| | | | | | std::vector reference. NFC llvm-svn: 241431
* [Static Analyzer] No longer include the full path of the source file in the ↵Gabor Horvath2015-07-021-1/+1
| | | | | | single file tests' bug identifiers. llvm-svn: 241292
* [Static Analyzer] Minor improvements to SATest.Gabor Horvath2015-06-302-20/+41
| | | | | | Differential Revision: http://reviews.llvm.org/D10812 llvm-svn: 241073
* Revert r240270 ("Fixed/added namespace ending comments using clang-tidy").Alexander Kornienko2015-06-223-3/+3
| | | | llvm-svn: 240353
* Fixed/added namespace ending comments using clang-tidy. NFCAlexander Kornienko2015-06-223-3/+3
| | | | | | | | | | | | The patch is generated using this command: $ tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \ -checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \ work/llvm/tools/clang To reduce churn, not touching namespaces spanning less than 10 lines. llvm-svn: 240270
* Check for consistent use of nullability type specifiers in a header.Douglas Gregor2015-06-191-1/+2
| | | | | | | | | | | | | | | | | Adds a new warning (under -Wnullability-completeness) that complains about pointer, block pointer, or member pointer declarations that have not been annotated with nullability information (directly or inferred) within a header that contains some nullability annotations. This is intended to be used to help maintain the completeness of nullability information within a header that has already been audited. Note that, for performance reasons, this warning will underrepresent the number of non-annotated pointers in the case where more than one pointer is seen before the first nullability type specifier, because we're only tracking one piece of information per header. Part of rdar://problem/18868820. llvm-svn: 240158
* [CodeGen][NEON] Emit constants for "immediate" intrinsic arguments.Ahmed Bougacha2015-06-041-8/+24
| | | | | | | | | | | | | | | | | On ARM/AArch64, we currently always use EmitScalarExpr for the immediate builtin arguments, instead of directly emitting the constant. When the overflow sanitizer is enabled, this generates overflow intrinsics instead of constants, breaking assumptions in various places. Instead, use the knowledge of "immediates" to directly emit a constant: - teach the tablegen backend to emit the "immediate" modifiers - use those modifiers in the NEON CodeGen, on ARM and AArch64. Fixes PR23517. Differential Revision: http://reviews.llvm.org/D10045 llvm-svn: 239002
* [utils] Improvements to check_cfc.py to work better with some build systems.Russell Gallop2015-06-032-3/+15
| | | | | | | | | Recognise options to output dependency files and don't perform checks. Report input file name when reporting a check failure so it is more obvious in large build logs. Differential Revision: http://reviews.llvm.org/D10183 llvm-svn: 238928
* [utils] Add exact check to check_cfc.py dash_s_no_change.Russell Gallop2015-06-032-6/+44
| | | | | | | | | Files compiled with -via-file-asm should be byte for byte identical. This change improves the checking on dash_s_no_change to detect non-code differences. If there is a difference, the check goes on to compare code and debug to try and be more informative. llvm-svn: 238926
* Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial typesBenjamin Kramer2015-05-294-9/+7
| | | | | | | | | | | | | | | | | | | | If the type isn't trivially moveable emplace can skip a potentially expensive move. It also saves a couple of characters. Call sites were found with the ASTMatcher + some semi-automated cleanup. memberCallExpr( argumentCountIs(1), callee(methodDecl(hasName("push_back"))), on(hasType(recordDecl(has(namedDecl(hasName("emplace_back")))))), hasArgument(0, bindTemporaryExpr( hasType(recordDecl(hasNonTrivialDestructor())), has(constructExpr()))), unless(isInTemplateInstantiation())) No functional change intended. llvm-svn: 238601
* Implement no_sanitize attribute.Peter Collingbourne2015-05-151-0/+14
| | | | | | Differential Revision: http://reviews.llvm.org/D9631 llvm-svn: 237463
* [TableGen] Clang changes for r235697 to stop leaking Expanders and Operators ↵Craig Topper2015-04-241-8/+7
| | | | | | in SetTheory. llvm-svn: 235698
* Implement target-specific __attribute__((aligned)) valueUlrich Weigand2015-04-211-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GCC construct __attribute__((aligned)) is defined to set alignment to "the default alignment for the target architecture" according to the GCC documentation: The default alignment is sufficient for all scalar types, but may not be enough for all vector types on a target that supports vector operations. The default alignment is fixed for a particular target ABI. clang currently hard-coded an alignment of 16 bytes for that construct, which is correct on some platforms (including X86), but wrong on others (including SystemZ). Since this value is ABI-relevant, it is important to get correct for compatibility purposes. This patch adds a new TargetInfo member "DefaultAlignForAttributeAligned" that targets can set to the appropriate default __attribute__((aligned)) value. Note that I'm deliberately *not* using the existing "SuitableAlign" value, which is used to set the pre-defined macro __BIGGEST_ALIGNMENT__, since those two values may not be the same on all platforms. In fact, on X86, __attribute__((aligned)) always uses 16-byte alignment, while __BIGGEST_ALIGNMENT__ may be larger if AVX-2 or AVX-512 are supported. (This is actually not yet correctly implemented in clang either.) The patch provides a value for DefaultAlignForAttributeAligned only for SystemZ, and leaves the default for all other targets at 16, which means no visible change in behavior on all other targets. (The value is still wrong for some other targets, but I'd prefer to leave it to the target maintainers for those platforms to fix.) llvm-svn: 235397
* Remove empty non-virtual destructors or mark them =default when non-publicBenjamin Kramer2015-04-111-8/+0
| | | | | | These add no value but can make a class non-trivially copyable. NFC. llvm-svn: 234689
* Use 'override/final' instead of 'virtual' for overridden methodsAlexander Kornienko2015-04-111-15/+15
| | | | | | | | | | | | | | | | | | | | Summary: The patch is generated using clang-tidy misc-use-override check. This command was used: tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py \ -checks='-*,misc-use-override' -header-filter='llvm|clang' -j=32 -fix Reviewers: dblaikie Reviewed By: dblaikie Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D8926 llvm-svn: 234678
* [tblgen] Use StringRef::trimBenjamin Kramer2015-04-101-24/+5
| | | | llvm-svn: 234643
* Fix a call to std::unique to actually discard the trailing (junk) elements.James Dennett2015-04-061-1/+2
| | | | | | Found by inspection. (No other instances of this problem were found.) llvm-svn: 234221
* [utils] Add Check Compile Flow Consistency tool (check_cfc.py).Russell Gallop2015-04-025-0/+649
| | | | | | | | | | | | This is a tool for checking consistency of code generation with different compiler options (such as -g or outputting to .s). This tool has found a number of code generation issues. The script acts as a wrapper to clang or clang++ performing 2 (or more) compiles then comparing the object files. Instructions for use are in check_cfc.py including how to use with LNT. Differential Revision: http://reviews.llvm.org/D8723 llvm-svn: 233919
* Devirtualize Attr and all subclasses.Benjamin Kramer2015-03-191-12/+39
| | | | | | | | | | | | We know all subclasses in tblgen so just generate a giant switch for the few virtual methods or turn them into a member variable using spare bits. The giant jump tables aren't pretty but still much smaller than a vtable for every attribute, shrinking Release+Asserts clang by ~400k. Also halves the size of the Attr base class. No functional change intended. llvm-svn: 232726
* Remove many superfluous SmallString::str() calls.Yaron Keren2015-03-181-1/+1
| | | | | | | | | | | | | | | Now that SmallString is a first-class citizen, most SmallString::str() calls are not required. This patch removes a whole bunch of them, yet there are lots more. There are two use cases where str() is really needed: 1) To use one of StringRef member functions which is not available in SmallString. 2) To convert to std::string, as StringRef implicitly converts while SmallString do not. We may wish to change this, but it may introduce ambiguity. llvm-svn: 232622
* Make helper functions static. NFC.Benjamin Kramer2015-03-101-1/+4
| | | | llvm-svn: 231811
* The semantic spelling enumeration should retain values to the spelling list ↵Aaron Ballman2015-03-101-1/+5
| | | | | | | | | | indexes used by the attribute. The only attribute affected by this in practice is the OpenCLImageAccessAttr, which has duplicate semantic spellings that are automatically stripped. We do not implicitly create an OpenCLImageAccessAttr, so this change only affects out of tree users. There is no way to test this behavior specifically that I can see, since this only affects implicit creation of attributes. Fixes PR22403. llvm-svn: 231803
* Teach raw_ostream to accept SmallString.Yaron Keren2015-03-101-2/+2
| | | | | | | | | | | | | | Saves adding .str() call to any raw_ostream << SmallString usage and a small step towards making .str() consistent in the ADTs by removing one of the SmallString::str() use cases, discussion at http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20141013/240026.html I'll update the Phabricator patch http://reviews.llvm.org/D6372 for review of the Twine SmallString support, it's more complex than this one. llvm-svn: 231763
* Replace size() calls on containers with empty() calls where appropriate. NFCAlexander Kornienko2015-01-232-3/+3
| | | | | | | | http://reviews.llvm.org/D7090 Patch by Gábor Horváth! llvm-svn: 226914
* [cleanup] Re-sort the #include lines using llvm/utils/sort_includes.pyChandler Carruth2015-01-142-4/+4
| | | | | | | No functionality changed, this is a purely mechanical cleanup to ensure the #include order remains consistent across the project. llvm-svn: 225975
* Attributes accepting an EnumArgument are allowed to pass a string literal, ↵Aaron Ballman2014-12-191-0/+1
| | | | | | | | or an identifier. VariadicEnumArguments now behave consistently instead of only accepting a string literal. This change affects the only attribute accepting a variadic enumeration: callable_when. llvm-svn: 224582
* Modify __has_attribute so that it only looks for GNU-style attributes. ↵Aaron Ballman2014-12-051-3/+0
| | | | | | Removes the ability to look for generic attributes and keywords via this macro, which has the potential to be a breaking change. However, since there is __has_cpp_attribute and __has_declspec_attribute, and given the limited usefulness of querying a generic attribute name regardless of syntax, this seems like the correct path forward. llvm-svn: 223468
* Create a new 'flag_enum' attribute.Alexis Hunt2014-11-281-1/+6
| | | | | | | | | | | This attribute serves as a hint to improve warnings about the ranges of enumerators used as flag types. It currently has no working C++ implementation due to different semantics for enums in C++. For more explanation, see the docs and testcases. Reviewed by Aaron Ballman. llvm-svn: 222906
* Fixing a use of stringstream to use an LLVM helper function. Drive-by fixing ↵Aaron Ballman2014-11-171-7/+3
| | | | | | header include order. NFC. llvm-svn: 222151
* MinGW doesn't implement std::to_string; working around it. NFC.Aaron Ballman2014-11-141-1/+6
| | | | llvm-svn: 222033
* Complete support for the SD-6 standing document (based off N4200) with ↵Aaron Ballman2014-11-141-9/+30
| | | | | | support for __has_cpp_attribute. llvm-svn: 221991
* [analyzer] Rename NewDeleteLeaks checker in the test script.Anna Zaks2014-10-311-1/+1
| | | | | | Fixup to r220289. llvm-svn: 220976
* Refactor tree printing in AST dumping.Richard Smith2014-10-301-26/+4
| | | | | | | | | | | Instead of manually maintaining a flag indicating whether we're about to print out the last child of the parent node (to determine whether we print "`" or "|"), capture a callable to print that child and defer printing it until we either see a next child or finish the parent. No functionality change intended. llvm-svn: 220930
* Allow constant expressions in pragma loop hints.Tyler Nowicki2014-10-121-4/+26
| | | | | | | | Previously loop hints such as #pragma loop vectorize_width(#) required a constant. This patch allows a constant expression to be used as well. Such as a non-type template parameter or an expression (2 * c + 1). Reviewed by Richard Smith llvm-svn: 219589
* Adding some FIXMEs to the attribute emitter code regarding whether pretty ↵Aaron Ballman2014-09-151-0/+6
| | | | | | printing enumerators should use quoted string literals, or identifiers. NFC. llvm-svn: 217781
* When pretty printing attributes that have enumeration arguments, print the ↵Aaron Ballman2014-09-151-6/+50
| | | | | | enumerator identifier (as a string literal) instead of the internal enumerator integral value. llvm-svn: 217771
* Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or ↵Craig Topper2014-08-271-1/+1
| | | | | | just letting them be implicitly created. llvm-svn: 216528
* Fix invalid test generation by utils/ABITest/ABITestGen.py when the same ↵Daniel Sanders2014-08-212-2/+6
| | | | | | | | | | | | | | | | | | | | | | | enum is generated more than once. When generating records/unions, the same enum type may be generated more than once (with different names). In these cases, the name of the enum values are not sufficiently unique to prevent multiple declarations. E.g: typedef enum T3 { enum0val0 } T3; typedef T3 T2[3]; typedef enum T4 { enum0val0 } T4; typedef union T1 { T2 field0; T4 field1; char field2; } T1; Added a unique suffix to enum values so that multiple identical enum types do not use the same enum value names. One example of this bug is produced by: ABITestGen.py --no-unsigned --no-vector --no-complex --no-bool \ --max-args 0 --max-record-depth 1 -o inputs/test.9921.a.c \ -T inputs/test.9921.b.c -D inputs/test.9921.driver.c \ --min=9921 --count=1 llvm-svn: 216166
* Remove some transient raw pointer ownership in ClangAttrEmitter::createArgumentDavid Blaikie2014-08-081-23/+28
| | | | | | | | This function might be a bit easier if it were split in two with a lot of early returns - and that setOptional bit in the outer function, but anyway. llvm-svn: 215263
* Add missing header guards.Benjamin Kramer2014-08-081-0/+5
| | | | llvm-svn: 215202
* The GNU-style aligned attribute has an optional expression, but the ↵Aaron Ballman2014-08-011-3/+9
| | | | | | | | generated pretty printing logic was unaware of this. Fixed the pretty printing logic, and added a test to ensure it no longer asserts. Added a FIXME to the code about eliding the parenthesis when pretty printing such a construct. llvm-svn: 214513
* Automate attribute argument count semantic checking when there are variadic ↵Aaron Ballman2014-07-311-1/+13
| | | | | | | | or optional arguments present. With this, the only time you should have to manually check attribute argument counts is when HasCustomParsing is set to true, or when you have variadic arguments that aren't really variadic (like ownership_holds and friends). Updating the diagnostics in the launch_bounds test since they have been improved in that case. Adding a test for nonnull since it has little test coverage, but has truly variadic arguments. llvm-svn: 214407
* Specifying the diagnostic argument through the attribute table generator ↵Aaron Ballman2014-07-161-0/+2
| | | | | | | | instead of having to enter it manually as part of the attribute subject list. This only affects attributes appertaining to ObjC interfaces and protocols. No new tests required as this is covered by existing tests. llvm-svn: 213193
* Fix typosAlp Toker2014-07-141-4/+3
| | | | | | Also consolidate 'backward compatibility' llvm-svn: 212974
* [ARM-BE] Generate correct NEON intrinsics for big endian systems.James Molloy2014-06-271-62/+172
| | | | | | | | | | | | | The NEON intrinsics in arm_neon.h are designed to work on vectors "as-if" loaded by (V)LDR. We load vectors "as-if" (V)LD1, so the intrinsics are currently incorrect. This patch adds big-endian versions of the intrinsics that does the "obvious but dumb" thing of reversing all vector inputs and all vector outputs. This will produce extra REVs, but we trust the optimizer to remove them. llvm-svn: 211893
* Add a Visualizer for VarDecl.Zachary Turner2014-06-261-6/+21
| | | | | | | | Reviewed by: Aaron Ballman Differential Revision: http://reviews.llvm.org/D4303 llvm-svn: 211788
OpenPOWER on IntegriCloud