summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* [PPC64] Add vector pack/unpack support from ISA 2.07Bill Schmidt2015-05-165-2/+345
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for the following new instructions in the Power ISA 2.07: vpksdss vpksdus vpkudus vpkudum vupkhsw vupklsw These instructions are available through the vec_packs, vec_packsu, vec_unpackh, and vec_unpackl built-in interfaces. These are lane-sensitive instructions, so the built-ins have different implementations for big- and little-endian, and the instructions must be marked as killing the vector swap optimization for now. The first three instructions perform saturating pack operations. The fourth performs a modulo pack operation, which means it can be represented with a vector shuffle, and conversely the appropriate vector shuffles may cause this instruction to be generated. The other instructions are only generated via built-in support for now. I noticed during patch preparation that the macro __VSX__ was not previously predefined when the power8-vector or direct-move features are requested. This is an error, and I've corrected that here as well. Appropriate tests have been added. There is a companion patch to llvm for the rest of this support. llvm-svn: 237500
* clang/test/SemaCXX/attr-no-sanitize.cpp: Don't mix stdout and stderr for ↵NAKAMURA Takumi2015-05-161-2/+2
| | | | | | | | FileCheck. MSVCRT's stdio doesn't do line buffering. llvm-svn: 237492
* Reverse the order of types in the reference dropping qualifiers error.Richard Trieu2015-05-158-16/+16
| | | | | | | | The error has the form ... 'int' ... 'const int' ... dropped qualifiers. At first glance, it appears that the const qualifier is added. Reverse the types so that the second type is less qualified than the first. llvm-svn: 237482
* Use llvm::StringSwitch<std::string> to take advantage of implicit asserting ↵Peter Collingbourne2015-05-151-4/+2
| | | | | | conversion to std::string. llvm-svn: 237475
* [modules] Add local submodule visibility support for declarations.Richard Smith2015-05-1532-106/+402
| | | | | | | | | | | | With this change, enabling -fmodules-local-submodule-visibility results in name visibility rules being applied to submodules of the current module in addition to imported modules (that is, names no longer "leak" between submodules of the same top-level module). This also makes it much safer to textually include a non-modular library into a module: each submodule that textually includes that library will get its own "copy" of that library, and so the library becomes visible no matter which including submodule you import. llvm-svn: 237473
* Implement no_sanitize attribute.Peter Collingbourne2015-05-1515-55/+236
| | | | | | Differential Revision: http://reviews.llvm.org/D9631 llvm-svn: 237463
* CGAtomic.cpp: Fix bogus \brief(s). Did you mean "\param"? [-Wdocumentation]NAKAMURA Takumi2015-05-151-3/+3
| | | | llvm-svn: 237447
* Limit set of types instantiated in FindInstantiatedDecl.Serge Pavlov2015-05-153-6/+64
| | | | | | | | Starting from r236426 FindInstantiatedDecl may instantiate types that are referenced before definition. This change limit the set of types that can be instantiated by this function. llvm-svn: 237434
* clang-format: Slightly change format decisions around macro annotations.Daniel Jasper2015-05-152-1/+4
| | | | | | | | | | | | Before: bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa GUARDED_BY(aaaaaaaaaaaa) = aaaaaaaaaaaaaaaaaaaaaaaaa; After: bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa GUARDED_BY(aaaaaaaaaaaa) = aaaaaaaaaaaaaaaaaaaaaaaaa; llvm-svn: 237430
* clang-format: Don't use column layout in lists that have separatingDaniel Jasper2015-05-152-9/+17
| | | | | | | | comments. At some point, we might to want to a layout with a different number of columns instead, but at the moment, this causes more confusion than it's worth. llvm-svn: 237427
* clang-format: Add missing space before ObjC selector.Daniel Jasper2015-05-152-1/+8
| | | | | | | | | | Before: [self aaaaa:(1 + 2)bbbbb:3]; After: [self aaaaa:(1 + 2) bbbbb:3]; llvm-svn: 237424
* [OPENMP] Fixed bug in atomic update/capture/write constructs.Alexey Bataev2015-05-158-799/+662
| | | | | | Fixed a bug with codegen for destination atomic l-value with padding and junk in this padding bytes. llvm-svn: 237422
* Revert r237385, "[CodeGen] Reuse stack space from unused function results"NAKAMURA Takumi2015-05-152-145/+3
| | | | | | It broke clang stage2, at least tblgen. llvm-svn: 237418
* Refactor: when exposing a definition in some module, provide listeners with theRichard Smith2015-05-156-16/+21
| | | | | | module rather than requiring them to work it out themselves. llvm-svn: 237416
* Add flag to enable native half typePirama Arumuga Nainar2015-05-143-37/+142
| | | | | | | | | | | | | | | | | | | Summary: r235215 enables support in LLVM for legalizing f16 type in the IR. AArch64 already had support for this. r235215 and some backend patches brought support for ARM, X86, X86-64, Mips and Mips64. This change exposes the LangOption 'NativeHalfType' in the command line, so the backend legalization can be used if desired. NativeHalfType is enabled for OpenCL (current behavior) or if '-fnative-half-type' is set. Reviewers: olista01, steven_wu, ab Subscribers: cfe-commits, srhines, aemerson Differential Revision: http://reviews.llvm.org/D9781 llvm-svn: 237406
* Fix Clang -Wsequence-pointDavid Blaikie2015-05-141-1/+1
| | | | llvm-svn: 237401
* InstrProf: Only disable coverage in built-in macros, not all system macrosJustin Bogner2015-05-142-4/+33
| | | | | | | | | The issue I was trying to solve in r236547 was about built-in macros, but I disabled coverage in all system macros. This is actually a bit of overkill, and makes the display of coverage around system macros degrade unnecessarily. Instead, limit this to builtins specifically. llvm-svn: 237397
* Tweak availability checking to look through typedef declarations.Ted Kremenek2015-05-142-2/+34
| | | | llvm-svn: 237396
* Revert "Detect uses of mismatching forms of 'new' and 'delete'"Diego Novillo2015-05-1417-691/+41
| | | | | | | | | This reverts commit 742dc9b6c9686ab52860b7da39c3a126d8a97fbc. This is generating multiple segfaults in our internal builds. Test case coming up shortly. llvm-svn: 237391
* Testing for the fix for bug 23429.Nemanja Ivanovic2015-05-142-1/+14
| | | | | | | | | Follow-up to commit for revision 236848. Just a test case for the macro definition under the right CPU/Arch. One combination was actually missed in the initial fix: - powerpc64-unknown-unknown -mcpu=pwr8 (rather than -mcpu=power8). llvm-svn: 237386
* [CodeGen] Reuse stack space from unused function resultsSergey Dmitrouk2015-05-142-3/+145
| | | | | | | | | | | | | | | | | | | | Summary: Space on stack allocated for unused structures returned by functions was unused even when it's lifetime didn't intersect with lifetime of any other objects that could use the same space. The test added also checks for named and auto objects. It seems to make sense to have this all in one place. Reviewers: aadg, rsmith, rjmccall, rnk Reviewed By: rnk Subscribers: asl, cfe-commits Differential Revision: http://reviews.llvm.org/D9743 llvm-svn: 237385
* DR295: cv-qualifiers on function types are ignored in C++.Richard Smith2015-05-144-45/+64
| | | | llvm-svn: 237383
* Update cxx_dr_status to latest issues list.Richard Smith2015-05-142-80/+80
| | | | llvm-svn: 237382
* Remove unused function HasPICArg().Ikhlas Ajbar2015-05-141-5/+0
| | | | llvm-svn: 237374
* [ARM] Fix of architecture naming typoVladimir Sukharev2015-05-141-1/+1
| | | | | | | | | | Inspired by James Greenhalgh's catch Subscribers: cfe-commits Relates to: http://reviews.llvm.org/rL237349 llvm-svn: 237370
* Detect uses of mismatching forms of 'new' and 'delete'Ismail Pazarbasi2015-05-1417-41/+691
| | | | | | | | | | | | | Emit warning when operand to `delete` is allocated with `new[]` or operand to `delete[]` is allocated with `new`. Reviewers: rtrieu, jordan_rose, rsmith Subscribers: majnemer, cfe-commits Differential Revision: http://reviews.llvm.org/D4661 llvm-svn: 237368
* Factor out SmallDataThresholdIkhlas Ajbar2015-05-145-46/+40
| | | | | | This patch factors out SmallDataThreshold code. llvm-svn: 237364
* [ARM] Add v8.1a architectureVladimir Sukharev2015-05-146-17/+109
| | | | | | | | | | | | | | Add support for ARMv8.1a architecture. Briefly it is described on http://community.arm.com/groups/processors/blog/2014/12/02/the-armv8-a-architecture-and-its-ongoing-development Reviewers: jmolloy, rengolin Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D8799 llvm-svn: 237349
* [AArch64 ACLE] Allow to define poly64_t as 'unsigned long long' on LLP64 system.Kevin Qin2015-05-143-1/+7
| | | | | | This fixes PR23414 as well. llvm-svn: 237348
* clang/test/Frontend/dependency-gen-escaping.c: Appease win32 hosts. ↵NAKAMURA Takumi2015-05-141-1/+1
| | | | | | | Investigating. FIXME: Do we really emit single \ or escaped \\ along the context with -fms-compatibility -MG? llvm-svn: 237347
* Revert r237339 as sanitizer-ppc64-linux1 does not like it.Yaron Keren2015-05-141-7/+6
| | | | | | | | | | | | | | | | | | | Complains: /home/buildbots/sanitizerslave1/sanitizer-ppc64-1/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:829:30: error: format specifies type 'long' but the argument has type 'long long' [-Werror,-Wformat] I, TAK, clang_Cursor_getTemplateArgumentValue(Cursor, I)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I'm not sure now how this should be fixed. %lld is non-standard and not accepted by mingw on Windows while PRId64 is bad for this bot. Is long long longer than 64 bits here? if not, why is PRId64 incompatible with it? something seems wrong. Probably all the datatypes should be replaced to unsigned or uint64_t depending upin requirements instead of the non standard long long. llvm-svn: 237346
* [MS ABI] Add support for /Zc:sizedDeallocDavid Majnemer2015-05-142-0/+12
| | | | llvm-svn: 237344
* Replace non-standard %lld printf usage with PRId64.Yaron Keren2015-05-141-6/+7
| | | | | | See also r180024. llvm-svn: 237339
* Fix buildbotsDavid Majnemer2015-05-141-1/+1
| | | | llvm-svn: 237338
* [MS ABI] __declspec(thread) behaves like thread_local in MSVC 2015David Majnemer2015-05-142-5/+21
| | | | | | | MSVC 2015 changed __declspec(thread) to make it behave like C++11's thread_local keyword instead of acting similarly to __thread. llvm-svn: 237337
* [AST] hasAttr followed by getAttr isn't efficientDavid Majnemer2015-05-141-2/+5
| | | | | | Just use getAttr because we are interested in the attribute's contents. llvm-svn: 237336
* [clang-cl] Add /Qvec and /Qvec- to control vectorizationDavid Majnemer2015-05-142-0/+12
| | | | llvm-svn: 237335
* clang/test/Frontend/dependency-gen-escaping.c: Tweak r237296, to let '/' and ↵NAKAMURA Takumi2015-05-141-3/+7
| | | | | | '\\' distinguishd, to unbreak "--host=linux --target=msvc". llvm-svn: 237333
* Generalize future keyword compat diagnostics.Richard Smith2015-05-144-28/+52
| | | | | | | | | | | | This, in preparation for the introduction of more new keywords in the implementation of the C++ language, generalizes the support for future keyword compat diagnostics (e.g., diag::warn_cxx11_keyword) by extending the applicability of the relevant property in IdentifierTable with appropriate renaming. Patch by Hubert Tong! llvm-svn: 237332
* [modules] Rearrange preprocessor module visibility handling, no observable ↵Richard Smith2015-05-143-31/+51
| | | | | | change intended. llvm-svn: 237331
* Add missing #include, found by modules build.Richard Smith2015-05-141-0/+1
| | | | llvm-svn: 237326
* [modules] Work around PR23521 to fix -O0 modules bootstrap.Richard Smith2015-05-141-1/+8
| | | | llvm-svn: 237325
* [modules] Fix a #include cycle when building a module for our builtin headers.Richard Smith2015-05-145-7/+25
| | | | | | | | | | xmmintrin.h includes emmintrin.h and vice versa if SSE2 is enabled. We break this cycle for a modules build, and instead make the xmmintrin.h module re-export the immintrin.h module. Also included is a fix for an assert in the serialization code if a module exports another module that was declared later in the same module map. llvm-svn: 237321
* Fix a #include cycle in the libclang headers. "Eventually" is now.Richard Smith2015-05-142-3/+4
| | | | llvm-svn: 237320
* Break \# in a depfile the same way as gcc.Paul Robinson2015-05-132-25/+22
| | | | | | | | Backslash followed by # in a filename should have both characters escaped, if you do it the way GNU Make wants. GCC doesn't, so we do it the way GCC does rather than the way GNU Make wants. llvm-svn: 237304
* Make GNUInline consistent with whether we use traditional GNU inline semantics.Peter Collingbourne2015-05-136-7/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we were setting LangOptions::GNUInline (which controls whether we use traditional GNU inline semantics) if the language did not have the C99 feature flag set. The trouble with this is that C++ family languages also do not have that flag set, so we ended up setting this flag in C++ modes (and working around it in a few places downstream by also checking CPlusPlus). The fix is to check whether the C89 flag is set for the target language, rather than whether the C99 flag is cleared. This also lets us remove most CPlusPlus checks. We continue to test CPlusPlus when deciding whether to pre-define the __GNUC_GNU_INLINE__ macro for consistency with GCC. There is a change in semantics in two other places where we weren't checking both CPlusPlus and GNUInline (FunctionDecl::doesDeclarationForceExternallyVisibleDefinition and FunctionDecl::isInlineDefinitionExternallyVisible), but this change seems to put us back into line with GCC's semantics (test case: test/CodeGen/inline.c). While at it, forbid -fgnu89-inline in C++ modes, as GCC doesn't support it, it didn't have any effect before, and supporting it just makes things more complicated. Differential Revision: http://reviews.llvm.org/D9333 llvm-svn: 237299
* Fix dependency file escaping.Paul Robinson2015-05-132-5/+65
| | | | | | | | | | | | | | When writing a dependency (.d) file, if space or # is immediately preceded by one or more backslashes, escape the backslashes as well as the space or # character. Otherwise leave backslash alone. This straddles the fence between BSD Make (which does no escaping at all, and does not support space or # in filespecs) and GNU Make (which does support escaping, but will fall back to the filespec as-written if the escaping doesn't match an existing file). Differential Revision: http://reviews.llvm.org/D9208 llvm-svn: 237296
* Made considerable updates to the documentation explaining how to add a new ↵Aaron Ballman2015-05-131-155/+267
| | | | | | attribute to clang. Cleans up some of the existing wording, as well as adding new information and better explanations. llvm-svn: 237268
* Silence Visual C++ warning C4189: 'Result' : local variable is initialized ↵Yaron Keren2015-05-131-2/+4
| | | | | | | | | but not referenced. Sadly, LLVM_ATTRIBUTE_UNUSED does nothing with Visual C++ which means we'll have to workaround such cases again and again. llvm-svn: 237267
* clang-format: Improve nested block / lambda indentation when wrappingDaniel Jasper2015-05-132-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | before binary/ternary operators. Basically, it doesn't seem right to indent a nested block aligned to a binary or ternary operator. Before: int i = aaaaaa ? 1 // : [] { return 2; // }(); llvm::errs() << "number of twos is " << std::count_if(v.begin(), v.end(), [](int x) { return x == 2; // force break }); After: int i = aaaaaa ? 1 // : [] { return 2; // }(); llvm::errs() << "number of twos is " << std::count_if(v.begin(), v.end(), [](int x) { return x == 2; // force break }); llvm-svn: 237263
OpenPOWER on IntegriCloud