summaryrefslogtreecommitdiff
path: root/include
Commit message (Collapse)AuthorAge
...
* OMPScheduleClause::OMPScheduleClause(): Fix possible typos, ↵NAKAMURA Takumi2014-06-20
| | | | | | s/\brief/\param/g. [-Wdocumentation] git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211348 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Initial support for 'ordered' clause.Alexey Bataev2014-06-20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211347 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Initial support for 'schedule' clause.Alexey Bataev2014-06-20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211342 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid invalidating successfully loaded module filesBen Langmuir2014-06-20
| | | | | | | | | | | | | | | | | Successfully loaded module files may be referenced in other ModuleManagers, so don't invalidate them. Two related things are fixed: 1) I thought the last module in the manager was always the one that failed, but it isn't. So check explicitly against the list of vetted modules from ReadASTCore. 2) We now keep the file descriptor of pcm file open, which avoids the possibility of having two different pcms for the same module loaded when building in parallel with headers being modified during a build. <rdar://problem/16835846> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211330 91177308-0d34-0410-b5e6-96231b3b80d8
* Objective-C qoi. When Objective-C pointer mismatches withFariborz Jahanian2014-06-19
| | | | | | | | | a qualified-id type because pointer is object of a forward class declaration, include this info in a diagnostic note. // rdar://10751015 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211324 91177308-0d34-0410-b5e6-96231b3b80d8
* Frontend: Add a CC1 flag to dump module dependencies to a directoryJustin Bogner2014-06-19
| | | | | | | | | | | | | | | | | | This adds the -module-dependency-dir to clang -cc1, which specifies a directory to copy all of a module's dependencies into in a form suitable to be used as a VFS using -ivfsoverlay with the generated vfs.yaml. This is useful for crashdumps that involve modules, so that the module dependencies will be intact when a crash report script is used to reproduce a problem on another machine. We currently encode the absolute path to the dump directory, due to limitations in the VFS system. Until we can handle relative paths in the VFS, users of the VFS map may need to run a simple search and replace in the file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211303 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR20069: bad loop pragma arguments crash FEEli Bendersky2014-06-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes a crash when handling malformed arguments to loop pragmas such as: "#pragma clang loop vectorize(()". Essentially any argument which is not an identifier or constant resulted in a crash. This patch also changes a couple of the error messages which weren't quite correct. New behavior with this patch vs old behavior: #pragma clang loop vectorize(1) OLD: error: missing keyword; expected 'enable' or 'disable' NEW: error: invalid argument; expected 'enable' or 'disable' #pragma clang loop vectorize() OLD: error: expected ')' NEW: error: missing argument to loop pragma 'vectorize' #pragma clang loop vectorize_width(bad) OLD: error: missing value; expected a positive integer value NEW: error: invalid argument; expected a positive integer value #pragma clang loop vectorize(bad) OLD: invalid keyword 'bad'; expected 'enable' or 'disable' NEW: error: invalid argument; expected 'enable' or 'disable' http://reviews.llvm.org/D4197 Patch by Mark Heffernan git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211292 91177308-0d34-0410-b5e6-96231b3b80d8
* Document unroll and unroll_count directives.Eli Bendersky2014-06-19
| | | | | | | | | | | Extend the documentation for "#pragma clang loop" hints to include the unroll and unroll_count directives. Patch by Mark Heffernan [http://reviews.llvm.org/D4198] git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211286 91177308-0d34-0410-b5e6-96231b3b80d8
* [c++1z] Implement N3994: a range-based for loop can declare a variable with ↵Richard Smith2014-06-19
| | | | | | | | | | | | | super-terse notation for (x : range) { ... } which is equivalent to for (auto &&x : range) { ... } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211267 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Improved diagnostic messages for vars with the predetermined data ↵Alexey Bataev2014-06-19
| | | | | | sharing attributes and reformatting git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211262 91177308-0d34-0410-b5e6-96231b3b80d8
* DiagnoseUnknownTypename always emits a diagnostic and returns trueReid Kleckner2014-06-19
| | | | | | | | Make it return void and delete the dead code in the parser that handled the case where it might return false. This has been dead since 2010 when John deleted Action.h. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211248 91177308-0d34-0410-b5e6-96231b3b80d8
* Objective-C ARC. Allow conversion of (void*) pointers toFariborz Jahanian2014-06-18
| | | | | | | | | retainable ObjC pointers without requiring a bridge-cast in the context of pointer comparison as this is in effect a +0 context. // rdar://16627903 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211243 91177308-0d34-0410-b5e6-96231b3b80d8
* Sema: Static redeclaration after extern declarations is a Microsoft ExtensionDavid Majnemer2014-06-18
| | | | | | | | | | | CL permits static redeclarations to follow extern declarations. The storage specifier on the latter declaration has no effect. This fixes PR20034. Differential Revision: http://reviews.llvm.org/D4149 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211238 91177308-0d34-0410-b5e6-96231b3b80d8
* CodeGen: improve ms instrincics supportSaleem Abdulrasool2014-06-18
| | | | | | | | | Add support for _InterlockedCompareExchangePointer, _InterlockExchangePointer, _InterlockExchange. These are available as a compiler intrinsic on ARM and x86. These are used directly by the Windows SDK headers without use of the intrin header. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211216 91177308-0d34-0410-b5e6-96231b3b80d8
* Inherit dll attributes to static localsHans Wennborg2014-06-18
| | | | | | | | This makes us handle static locals in exported/imported functions correctly. Differential Revision: http://reviews.llvm.org/D4136 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211173 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Initial support for '#pragma omp for' (fixed incompatibility with ↵Alexey Bataev2014-06-18
| | | | | | MSVC). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211140 91177308-0d34-0410-b5e6-96231b3b80d8
* Documentation for #pragma clang loop directive and options vectorize and ↵Tyler Nowicki2014-06-18
| | | | | | | | | interleave. Reviewed by: Aaron Ballman and Dmitri Gribenko git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211135 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "[OPENMP] Initial support for '#pragma omp for'."Rafael Espindola2014-06-17
| | | | | | | | This reverts commit r211096. Looks like it broke the msvc build: SemaOpenMP.cpp(140) : error C4519: default template arguments are only allowed on a class template git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211113 91177308-0d34-0410-b5e6-96231b3b80d8
* Rewrite ARM NEON intrinsic emission completely.James Molloy2014-06-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There comes a time in the life of any amateur code generator when dumb string concatenation just won't cut it any more. For NeonEmitter.cpp, that time has come. There were a bunch of magic type codes which meant different things depending on the context. There were a bunch of special cases that really had no reason to be there but the whole thing was so creaky that removing them would cause something weird to fall over. There was a 1000 line switch statement for code generation involving string concatenation, which actually did lexical scoping to an extent (!!) with a bunch of semi-repeated cases. I tried to refactor this three times in three different ways without success. The only way forward was to rewrite the entire thing. Luckily the testing coverage on this stuff is absolutely massive, both with regression tests and the "emperor" random test case generator. The main change is that previously, in arm_neon.td a bunch of "Operation"s were defined with special names. NeonEmitter.cpp knew about these Operations and would emit code based on a huge switch. Actually this doesn't make much sense - the type information was held as strings, so type checking was impossible. Also TableGen's DAG type actually suits this sort of code generation very well (surprising that...) So now every operation is defined in terms of TableGen DAGs. There are a bunch of operators to use, including "op" (a generic unary or binary operator), "call" (to call other intrinsics) and "shuffle" (take a guess...). One of the main advantages of this apart from making it more obvious what is going on, is that we have proper type inference. This has two obvious advantages: 1) TableGen can error on bad intrinsic definitions easier, instead of just generating wrong code. 2) Calls to other intrinsics are typechecked too. So we no longer need to work out whether the thing we call needs to be the Q-lane version or the D-lane version - TableGen knows that itself! Here's an example: before: case OpAbdl: { std::string abd = MangleName("vabd", typestr, ClassS) + "(__a, __b)"; if (typestr[0] != 'U') { // vabd results are always unsigned and must be zero-extended. std::string utype = "U" + typestr.str(); s += "(" + TypeString(proto[0], typestr) + ")"; abd = "(" + TypeString('d', utype) + ")" + abd; s += Extend(utype, abd) + ";"; } else { s += Extend(typestr, abd) + ";"; } break; } after: def OP_ABDL : Op<(cast "R", (call "vmovl", (cast $p0, "U", (call "vabd", $p0, $p1))))>; As an example of what happens if you do something wrong now, here's what happens if you make $p0 unsigned before the call to "vabd" - that is, $p0 -> (cast "U", $p0): arm_neon.td:574:1: error: No compatible intrinsic found - looking up intrinsic 'vabd(uint8x8_t, int8x8_t)' Available overloads: - float64x2_t vabdq_v(float64x2_t, float64x2_t) - float64x1_t vabd_v(float64x1_t, float64x1_t) - float64_t vabdd_f64(float64_t, float64_t) - float32_t vabds_f32(float32_t, float32_t) ... snip ... This makes it seriously easy to work out what you've done wrong in fairly nasty intrinsics. As part of this I've massively beefed up the documentation in arm_neon.td too. Things still to do / on the radar: - Testcase generation. This was implemented in the previous version and not in the new one, because - Autogenerated tests are not being run. The testcase in test/ differs from the autogenerated version. - There were a whole slew of special cases in the testcase generation that just felt (and looked) like hacks. If someone really feels strongly about this, I can try and reimplement it too. - Big endian. That's coming soon and should be a very small diff on top of this one. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211101 91177308-0d34-0410-b5e6-96231b3b80d8
* clang-format: Introduce style with spaces on both sides of */&.Daniel Jasper2014-06-17
| | | | | | | Patch by Janusz Sobczak (slightly extended). This fixes llvm.org/19929. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211098 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Initial support for '#pragma omp for'.Alexey Bataev2014-06-17
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211096 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Renamed 'DataRecursiveASTVisitor' to just 'RecursiveASTVisitor' for ↵Alexey Bataev2014-06-17
| | | | | | 'reduction' clause and small reformatting after Alp Toker's review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211088 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for the /Fi argument to clang-cl (PR20036)Hans Wennborg2014-06-17
| | | | | | | | Patch by Ehsan Akhgari! Differential Revision: http://reviews.llvm.org/D4143 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211081 91177308-0d34-0410-b5e6-96231b3b80d8
* MS static locals mangling: don't count enum scopesHans Wennborg2014-06-17
| | | | | | | | | | We may not have the mangling for static locals vs. enums completely figured out, but at least for my simple test cases, enums should not increment the mangling number. Differential Revision: http://reviews.llvm.org/D4164 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211078 91177308-0d34-0410-b5e6-96231b3b80d8
* AArch64: Support for __builtin_arm_rbit() and __builtin_arm_rbit64().Jim Grosbach2014-06-16
| | | | | | | | __builtin_arm_rbit() and __builtin_arm_rbit64(). rdar://9283021 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211060 91177308-0d34-0410-b5e6-96231b3b80d8
* ARM: Support for __builtin_arm_rbit() intrinsic.Jim Grosbach2014-06-16
| | | | | | | | Reverse the bits in a word. Maps to the RBIT instruction. rdar://9283021 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211059 91177308-0d34-0410-b5e6-96231b3b80d8
* Objective-C. Diagnose when property access is using declaredFariborz Jahanian2014-06-16
| | | | | | | | property accessor methods which have become deprecated or available. // rdar://15951801 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211039 91177308-0d34-0410-b5e6-96231b3b80d8
* [C++1z] Implement N4051: 'typename' is permitted instead of 'class' when ↵Richard Smith2014-06-16
| | | | | | declaring a template template parameter. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211031 91177308-0d34-0410-b5e6-96231b3b80d8
* Add -std=c++1z flag for C++17 features.Richard Smith2014-06-16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211030 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix typosAlp Toker2014-06-16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211025 91177308-0d34-0410-b5e6-96231b3b80d8
* Use the ShowInSystemHeader bit consistently for all diagnosticsAlp Toker2014-06-16
| | | | | | | | | | | | By describing system header suppressions directly in tablegen we eliminate special cases in getDiagnosticSeverity(). Dropping the reliance on builtin diagnostic classes when mapping also gets us closer to the goal of reusing the diagnostic machinery for custom diagnostics. No change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211023 91177308-0d34-0410-b5e6-96231b3b80d8
* clang/AST/OpenMPClause.h: Update \param VL. [-Wdocumentation]NAKAMURA Takumi2014-06-16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211011 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Initial support of 'reduction' clauseAlexey Bataev2014-06-16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211007 91177308-0d34-0410-b5e6-96231b3b80d8
* Hide the concept of diagnostic levels from lex, parse and semaAlp Toker2014-06-15
| | | | | | | | | | | | | | | | The compilation pipeline doesn't actually need to know about the high-level concept of diagnostic mappings, and hiding the final computed level presents several simplifications and other potential benefits. The only exceptions are opportunistic checks to see whether expensive code paths can be avoided for diagnostics that are guaranteed to be ignored at a certain SourceLocation. This commit formalizes that invariant by introducing and using DiagnosticsEngine::isIgnored() in place of individual level checks throughout lex, parse and sema. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211005 91177308-0d34-0410-b5e6-96231b3b80d8
* With the option '-analyzer-config stable-report-filename=true',Sylvestre Ledru2014-06-14
| | | | | | | | | | instead of report-XXXXXX.html, scan-build/clang analyzer generate report-<filename>-<function, method name>-<function position>-<id>.html. (id = i++ for several issues found in the same function/method) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210970 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a crash in Retain Count checker error reportingAnna Zaks2014-06-13
| | | | | | | | | Fixes a crash in Retain Count checker error reporting logic by handing the allocation statement retrieval from a BlockEdge program point. Also added a simple CFG dump routine for debugging. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210960 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for the /EP argument to clang-clHans Wennborg2014-06-13
| | | | | | | | | | This maps the /EP argument to both -E and -P. Patch by Ehsan Akhgari! Differential Reviion: http://reviews.llvm.org/D4133 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210935 91177308-0d34-0410-b5e6-96231b3b80d8
* Adds a Pragma spelling for attributes to tablegen and makes use of it for loopTyler Nowicki2014-06-13
| | | | | | | | | | hint attributes. Includes tests for pragma printing and for attribute order which is incorrectly reversed by ParsedAttributes. Reviewed by Aaron Ballman git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210925 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove top-level Clang -fsanitize= flags for optional ASan features.Alexey Samsonov2014-06-13
| | | | | | | | | | | | | | Init-order and use-after-return modes can currently be enabled by runtime flags. use-after-scope mode is not really working at the moment. The only problem I see is that users won't be able to disable extra instrumentation for init-order and use-after-scope by a top-level Clang flag. But this instrumentation was implicitly enabled for quite a while and we didn't hear from users hurt by it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210924 91177308-0d34-0410-b5e6-96231b3b80d8
* MS ABI: Fix inheritance model calculation in CRTPDavid Majnemer2014-06-13
| | | | | | | | | | | | | | | | | CRTP-like patterns involve a class which inherits from another class using itself as a template parameter. However, the base class itself may try to create a pointer-to-member which involves the derived class. This is problematic because we may not have finished parsing the most derived classes' base specifiers yet. It turns out that MSVC simply uses the unspecified inheritance model instead of doing anything fancy. This fixes PR19987. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210886 91177308-0d34-0410-b5e6-96231b3b80d8
* Recover from missing 'typename' in sizeof(T::InnerType)Reid Kleckner2014-06-12
| | | | | | | | | | | | | | | | | | | | | | Summary: 'sizeof' is a UnaryExprOrTypeTrait, and it can contain either a type or an expression. This change threads a RecoveryTSI parameter through the layers between TransformUnaryExprOrTypeTrait the point at which we look up the type. If lookup finds a single type result after instantiation, we now build TypeSourceInfo for it just like a normal transformation would. This fixes the last error in the hello world ATL app that I've been working with, and it now links and runs with clang. Please try it and file bugs! Reviewers: rsmith Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4108 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210855 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove stale part of comment.Eli Bendersky2014-06-12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210851 91177308-0d34-0410-b5e6-96231b3b80d8
* The Clang C API does not require C++. Thanks to Jordan Rose for pointing out ↵Richard Smith2014-06-12
| | | | | | this error! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210841 91177308-0d34-0410-b5e6-96231b3b80d8
* Include system_error directly.Rafael Espindola2014-06-12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210802 91177308-0d34-0410-b5e6-96231b3b80d8
* Replace llvm::error_code with std::error_code.Rafael Espindola2014-06-12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210780 91177308-0d34-0410-b5e6-96231b3b80d8
* DiagnosticsEngine: update severity setters to new terminologyAlp Toker2014-06-12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210764 91177308-0d34-0410-b5e6-96231b3b80d8
* Complete the switch from mappings to declarative diagnostic severitiesAlp Toker2014-06-12
| | | | | | | | | This begins to address cognitive dissonance caused by treating the Note diagnostic level as a severity in the diagnostic engine. No change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210758 91177308-0d34-0410-b5e6-96231b3b80d8
* Use StringRef to simplify code. No functional change.Craig Topper2014-06-12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210751 91177308-0d34-0410-b5e6-96231b3b80d8
* Use ArrayRef in some function parameters instead of a pointer and count. No ↵Craig Topper2014-06-12
| | | | | | functional change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210750 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix typo.Rafael Espindola2014-06-12
| | | | | | Thanks to Alp Toker for noticing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210744 91177308-0d34-0410-b5e6-96231b3b80d8