Ana Pazos
9883d6d2b5
[AArch64] Fixed vget/vset_lane_f16 implementation
...
Replaced cast and vreinterepret operations with
code to reinterpret bitwise the types float16_t and
int16_t.
llvm-svn: 201112
2014-02-10 21:20:53 +00:00
David Majnemer
4bb0980d96
MS ABI: Add support for #pragma pointers_to_members
...
Introduce a notion of a 'current representation method' for
pointers-to-members.
When starting out, this is set to 'best case' (representation method is
chosen by examining the class, selecting the smallest representation
that would work given the class definition or lack thereof).
This pragma allows the translation unit to dictate exactly what
representation to use, similar to how the inheritance model keywords
operate.
N.B. PCH support is forthcoming.
Differential Revision: http://llvm-reviews.chandlerc.com/D2723
llvm-svn: 201105
2014-02-10 19:50:15 +00:00
Tim Northover
02e38609e7
ARM: implement support for crypto intrinsics in arm_neon.h
...
llvm-svn: 200708
2014-02-03 17:28:04 +00:00
Tim Northover
c322f838bc
ARM & AArch64: share the BI__builtin_neon enum defs.
...
llvm-svn: 200470
2014-01-30 14:47:51 +00:00
Aaron Ballman
35db2b3d4c
Consolidating several table-generated files containing parser-related string switches into a single file. This reduces build-related complexity by replacing four separate projects (and table-gen instantiations) with a single one.
...
No functional changes intended.
llvm-svn: 200424
2014-01-29 22:13:45 +00:00
Aaron Ballman
c669cc0d77
Add a new attribute meta-spelling called "GCC" -- it widens into being a GNU spelling, and a CXX11 spelling with the namespace "gnu". It also sets a bit on the spelling certifying that it is known to GCC. From this, we can warn about the extension appropriately. As a consequence, the FunctionDefinition functionality is completely removed.
...
Replacing the functionality from r199676, which didn't solve the problem as elegantly.
llvm-svn: 200252
2014-01-27 22:10:04 +00:00
Jiangning Liu
bb59b3daa9
For AArch64 Neon, fix intrinsics implementation using nested macros.
...
llvm-svn: 200114
2014-01-26 03:38:42 +00:00
Aaron Ballman
81cb8cbfa6
Adds a getSemanticSpelling function to semantic attribute subclasses which have a meaningful semantic spelling. Adds a sibling function to parsed attribtues (via AttributeList) for getting the semantic spelling, if one were to exist. This can be used for cleaner code that deals directly with the semantic spellings (such as the MSInheritance attribute).
...
llvm-svn: 200041
2014-01-24 21:32:49 +00:00
Aaron Ballman
83f197b613
Since Visual Studio 2012 is the minimum version of MSVC we support, the old-style visualizers are being removed. Adding a Natvis replacement for the debugging visualizers.
...
llvm-svn: 200032
2014-01-24 19:46:45 +00:00
Aaron Ballman
bc909618f2
If an attribute has a semantically meaningful spelling (such as ArgumentWithTypeTagAttr or MSInheritanceAttr), display the spelling used for the attribute as part of the AST dump. This should ease debugging the AST for these attributes. Attributes without semantically meaningful spelling variations are not affected.
...
llvm-svn: 199834
2014-01-22 21:51:20 +00:00
Aaron Ballman
b9023ed0f6
Exposed a declarative way to specify that an attribute can be duplicated when merging attributes on a declaration. This replaces some hard-coded functionality from Sema.
...
llvm-svn: 199677
2014-01-20 18:07:09 +00:00
Aaron Ballman
9a99e0da5a
Remove some hard-coded specialness for thread-safety attributes from the parser, and made it more declarative. If an attribute is allowed to appear on a function definition when late parsed, it can now use the FunctionDefinition attribute subject. It's treated as a FunctionDecl for most purposes, except it also gets exposed on the AttributeList so that it can be used while parsing.
...
llvm-svn: 199676
2014-01-20 17:18:35 +00:00
NAKAMURA Takumi
c28a9a2c33
[CMake] Deprecate CLANG_RUNTIME_OUTPUT_INTDIR and CLANG_LIBRARY_OUTPUT_INTDIR.
...
LLVM_*_OUTPUT_INTDIR should be available everywhere. It was my mistake when I introduced INTDIR stuff.
llvm-svn: 199597
2014-01-19 13:00:01 +00:00
Alp Toker
96cf758d3a
Fix comment typos
...
llvm-svn: 199563
2014-01-18 21:49:37 +00:00
Aaron Ballman
07c3d53c88
When generating Spelling enumeration values, do not generate identifiers in the reserved namespace. Strip underscores as appropriate, taking care to not create duplicate identifiers.
...
llvm-svn: 199414
2014-01-16 19:44:01 +00:00
Aaron Ballman
4755304fd1
Fixing a warning that causes the sanitizer build disliked about mixing && and ||. Since this is generated code, the && has been removed from the expression entirely.
...
llvm-svn: 199392
2014-01-16 14:32:03 +00:00
Aaron Ballman
12b9f6535b
Factored some function-like type reasoning out of SemaDeclAttr and onto Decl itself. This allows for more declarative subjects in attribute tablegen where the attribute appertains to something function-like, but not strictly a FunctionDecl.
...
llvm-svn: 199387
2014-01-16 13:55:42 +00:00
Aaron Ballman
36a5350e51
Distinguish between attributes explicitly written at the request of the user, and attributes implicitly generated to assist in bookkeeping by the compiler. This is done so by table generating a CreateImplicit method for each attribute.
...
Additionally, remove the optional nature of the spelling list index when creating attributes. This is supported by table generating a Spelling enumeration when the spellings for an attribute are distinct enough to warrant it.
llvm-svn: 199378
2014-01-16 13:03:14 +00:00
Kostya Serebryany
317e2c499d
replace LeakSanitizerIsTurnedOffForTheCurrentProcess with __lsan_is_turned_off, but this time hide it under __has_feature(address_sanitizer); also include <sanitizer/lsan_interface.h>
...
llvm-svn: 199303
2014-01-15 07:59:37 +00:00
Aaron Ballman
09e98ffa5b
When determining the attribute's parsed kind, pay attention to the syntax used. This fixes bugs where an attribute has differing GNU and Declspec spellings, but they are treated as the same. Eg) __declspec(aligned) when it should be __attribute__((aligned)), and __attribute__((align)) when it should be __declspec(align).
...
llvm-svn: 199144
2014-01-13 21:42:39 +00:00
Kostya Serebryany
a6afef7a51
reapply r198858: Disable LeakSanitizer in TableGen binaries, see PR18325; this time LeakSanitizerIsTurnedOffForTheCurrentProcess is used instead of __lsan_is_turned_off
...
llvm-svn: 198922
2014-01-10 08:05:42 +00:00
Aaron Ballman
0fa06d879a
__has_attribute now understands target-specific attributes. So when you ask whether an ARM target has the "interrupt" attribute, it will return true for ARM and MSP430 targets, and false for others.
...
llvm-svn: 198897
2014-01-09 22:57:44 +00:00
Aaron Ballman
ab7691c4ce
Removing the notion of TargetAttributesSema and replacing it with one where the parsed attributes are responsible for knowing their target-specific nature, instead of letting Sema figure it out. This is necessary so that __has_attribute can eventually determine whether a parsed attribute applies to the given target or not.
...
llvm-svn: 198896
2014-01-09 22:48:32 +00:00
Alp Toker
96af9886ef
Revert "Disable LeakSanitizer in TableGen binaries, see PR18325"
...
To declare or define reserved identifers is undefined behaviour in standard
C++. This needs to be addressed in compiler-rt before it can be used in LLVM.
See the list discussion for details.
This reverts commit r198858.
llvm-svn: 198885
2014-01-09 19:43:17 +00:00
Aaron Ballman
15b27b97b7
Removing a bit of custom parsing functionality used by the thread safety analysis APIs. Now using tablegen to determine whether an attribute's arguments should be parsed in an unevaluated context instead of relying on a separate, hard-coded list of attributes.
...
llvm-svn: 198883
2014-01-09 19:39:35 +00:00
Kostya Serebryany
bc60254543
Disable LeakSanitizer in TableGen binaries, see PR18325
...
llvm-svn: 198858
2014-01-09 09:26:26 +00:00
Chandler Carruth
5553d0d4ca
Sort all the #include lines with LLVM's utils/sort_includes.py which
...
encodes the canonical rules for LLVM's style. I noticed this had drifted
quite a bit when cleaning up LLVM, so wanted to clean up Clang as well.
llvm-svn: 198686
2014-01-07 11:51:46 +00:00
Aaron Ballman
0e468c02bc
This helper method isn't needed, and it's unsafe for it to use StringRef in the first place. Replaced the unsafe code with the proper accessor.
...
llvm-svn: 198569
2014-01-05 21:08:29 +00:00
Douglas Gregor
d1b760a670
CMake separate projects: finish output-directory changes.
...
Make sure clang-tblgen, clang++, and clang-cl get created in the Clang
binary build directory.
llvm-svn: 198331
2014-01-02 18:37:47 +00:00
DeLesley Hutchins
bb79c338ed
Update DataRecursiveASTVisitor so that it visits attributes.
...
llvm-svn: 198249
2013-12-30 21:03:02 +00:00
DeLesley Hutchins
c4a82438a7
Update RecursiveASTVisitor so that it visits attributes. This is currently
...
important for thread safety attributes, which contain expressions that were
not being visited, and were thus invisible to various tools. There are now
Visit*Attr methods that can be overridden for every attribute.
llvm-svn: 198224
2013-12-30 17:24:36 +00:00
Aaron Ballman
3e424b5070
Teach the diagnostics engine about the Attr type to make reporting on semantic attributes easier (and not require hard-coded strings). This requires a getSpelling() function on the Attr class, which is table-driven. Updates a handful of cases where a hard-coded string was being used to test the functionality out. Updating associated test cases for the improved quoting.
...
llvm-svn: 198055
2013-12-26 18:30:57 +00:00
Aaron Ballman
aa47d24a47
Reverting r197715 -- it appears that MSVC is happy with the code, but clang is not.
...
llvm-svn: 197716
2013-12-19 19:39:25 +00:00
Aaron Ballman
ced10529fe
No longer leaking Argument objects after calling createArgument. However, since an OwningPtr cannot live in a std::vector yet, there are some manual deletions that have a FIXME attached to them. These will go away once C++11 support is allowed.
...
llvm-svn: 197715
2013-12-19 19:33:35 +00:00
Aaron Ballman
e615393356
Removing the SourceLocation unused attribute argument type.
...
llvm-svn: 197707
2013-12-19 18:10:57 +00:00
Aaron Ballman
8edb5c2081
Refactor the Microsoft inheritance attribute handling so that it no longer has special treatment. Also fixes a minor bug where the attributes were being parsed as though they were GNU-style attributes when they were in fact keyword attributes.
...
llvm-svn: 197629
2013-12-18 23:44:18 +00:00
Aaron Ballman
64e6986e39
Allow target-specific attributes to share a spelling between different attributes via the ParseKind field. Attributes will be given a common parsed attribute identifier (the AttributeList::AT_* enum), but retain distinct Attr subclasses.
...
This new functionality is used to implement the ARM and MSP430 interrupt attribute.
Patch reviewed by Richard Smith over IRC.
llvm-svn: 197343
2013-12-15 13:05:48 +00:00
Ted Kremenek
d980da2290
Enhance attribute machinery to include ObjCProtocols as "subjects" in attribute declarations.
...
llvm-svn: 196954
2013-12-10 19:43:42 +00:00
Kevin Qin
fb79d7f843
[AArch64 NEON] Support poly128_t and implement relevant intrinsic.
...
llvm-svn: 196888
2013-12-10 06:49:01 +00:00
Ana Pazos
6a8b8b5f0d
Implemented vget/vset_lane_f16 intrinsics
...
llvm-svn: 196535
2013-12-05 21:13:24 +00:00
Alp Toker
d473363876
Correct hyphenations in comments and assert messages
...
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities in nearby lines.
llvm-svn: 196466
2013-12-05 04:47:09 +00:00
Aaron Ballman
00dcc43b56
Typo caught by Alp Toker: s/appertain/appertains
...
llvm-svn: 196273
2013-12-03 13:45:50 +00:00
Hao Liu
a5246fde90
[AArch64]Add missing floating point convert, round and misc intrinsics.
...
E.g. int64x1_t vcvt_s64_f64(float64x1_t a) -> FCVTZS Dd, Dn
llvm-svn: 196211
2013-12-03 06:07:13 +00:00
Hao Liu
4b850c5e0d
revert r196152.
...
This is a duplicate implementation.
E.g. this patch defines:
float64_t vabd_f64(float64_t a, float64_t b)
But there is already a similar intrinsic "vabdd_f64" with the same types.
Also, this intrinsic will be conflicted to the vector type intrinsic as following(Which is implemented by me and will be committed to trunk):
float64x1_t vabd_f64(float64x1_t a, float64x1_t b).
Two functions shouldn't have a same name in arm_neon.h.
According to ARM ACLE document, such vabd_f64 with float64_t is not existing.
So I revert this commit.
llvm-svn: 196205
2013-12-03 05:35:17 +00:00
Jiangning Liu
cc1da2c938
Add some missing AArch64 Neon intrinsics like vmull_high_n_s16 and friends.
...
llvm-svn: 196189
2013-12-03 01:28:55 +00:00
Chad Rosier
b0574f3bf7
[AArch64] Add missing NEON scalar floating-point to integer convert ACLEs.
...
llvm-svn: 196152
2013-12-02 21:07:24 +00:00
Aaron Ballman
93b5cc6db8
Rectifying style issues with generated code. No functional change intended.
...
llvm-svn: 196142
2013-12-02 19:36:42 +00:00
Aaron Ballman
3aff633590
Automate attribute language option checking by specifying the list of options to test in tablegen.
...
llvm-svn: 196138
2013-12-02 19:30:36 +00:00
Aaron Ballman
604dfec8dc
Re-enabled support for the Subjects for the weak attribute. This changes the diagnostic involved to be more accurate -- for C++ code, it will now report that weak applies to variables, functions or classes. Added additional test case for this.
...
llvm-svn: 196120
2013-12-02 17:07:07 +00:00
Aaron Ballman
a358c9051e
Using the proper set key when determining whether a SubsetSubject helper method has been previously generated.
...
llvm-svn: 196103
2013-12-02 14:58:17 +00:00