- Mar 26, 2015
-
-
Richard Smith authored
modules, and allow sub-modules of a module with a use-declaration to make use of the nominated modules. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233323 91177308-0d34-0410-b5e6-96231b3b80d8
-
Davide Italiano authored
of the shift wasn't a constant integer expression, now it (hopefully) does. PR: 22059 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233320 91177308-0d34-0410-b5e6-96231b3b80d8
-
Bill Schmidt authored
Eric Christopher pointed out that we have a check for assembly code generation in a clang test, which isn't cool. We already have Driver and back-end CodeGen tests for the .abiversion handling, so this testing is unnecessary anyway. Make it go away. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233314 91177308-0d34-0410-b5e6-96231b3b80d8
-
Daniel Jasper authored
Before: aaaaaaaa(aaaaaaaaaa, bbbbbbbbbb).a(); After: aaaaaaaa(aaaaaaaaaa, bbbbbbbbbb) .a(); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233304 91177308-0d34-0410-b5e6-96231b3b80d8
-
Ed Schouten authored
Unlike most of the other platforms supported by Clang, CloudABI only supports static linkage, for the reason that global filesystem access is prohibited. Functions provided by dlfcn.h are not present. As we know that applications will not try to do any symbol lookups at run-time, we can garbage collect unused code quite aggressively. Because of this, it makes sense to enable -ffunction-sections and -fdata-sections by default. Object files will be a bit larger than usual, but the resulting binary will not be affected, as the sections are merged again. However, when --gc-sections is used, the linker is able to remove unused code far more more aggressively. It also has the advantage that transitive library dependencies only need to be provided to the linker in case that functionality is actually used. Differential Revision: http://reviews.llvm.org/D8635 Reviewed by: echristo git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233299 91177308-0d34-0410-b5e6-96231b3b80d8
-
Daniel Jasper authored
NewlinesBefore and HasUnescapedNewline were not properly propagated leading to llvm.org/PR23032. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233276 91177308-0d34-0410-b5e6-96231b3b80d8
-
Ed Schouten authored
Now that CloudABI's target information and header search logic for Clang has been submitted, the only thing that remains to be done is adding support for CloudABI's linker. CloudABI uses Binutils ld, although there is some work to use lld instead. This means that this code is largely based on what we use on FreeBSD. There are some exceptions, however: - Only static linking is performed. CloudABI does not support any dynamically linked executables. - CloudABI uses compiler-rt, libc++ and libc++abi unconditionally. Link in these libraries instead of using libgcc_s, libstdc++, etc. - We must ensure that the .eh_frame_hdr is present to make C++ exceptions work properly. Differential Revision: http://reviews.llvm.org/D8250 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233269 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
Clang was inserting these into a dense map. While it never iterated the dense map during normal compilation, it did when emitting a module. Fix this by using a standard MapVector to preserve the order in which we encounter the late parsed templates. I suspect this still isn't ideal, as we don't seem to remove things from this map even when we mark the templates as no longer late parsed. But I don't know enough about this particular extension to craft a nice, subtle test case covering this. I've managed to get the stress test to at least do some late parsing and demonstrate the core problem here. This patch fixes the test and provides deterministic behavior which is a strict improvement over the prior state. I've cleaned up some of the code here as well to be explicit about inserting when that is what is actually going on. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233264 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
templates. Turns out all of this works correctly (so far). But it should cover more code paths and will let me test some things that don't actually work next. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233263 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
deterministically. This fixes a latent issue where even Clang's Sema (and diagnostics) were non-deterministic in the face of this pragma. The fix is super simple -- just use a MapVector so we track the order in which these are parsed (or imported). Especially considering how rare they are, this seems like the perfect tradeoff. I've also simplified the client code with judicious use of auto and range based for loops. I've added some pretty hilarious code to my stress test which now survives the binary diff without issue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233261 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
updated decl contexts get emitted. Since this code was added, we have newer vastly simpler code for handling this. The code I'm removing was very expensive and also generated unstable order of declarations which made module outputs non-deterministic. All of the tests continue to pass for me and I'm able to check the difference between the .pcm files after merging modules together. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233251 91177308-0d34-0410-b5e6-96231b3b80d8
-
Richard Smith authored
non-visible definition, skip the new definition and make the old one visible instead of trying to parse it again and failing horribly. C++'s ODR allows us to assume that the two definitions are identical. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233250 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
decl context lookup tables. The first attepmt at this caused problems. We had significantly more sources of non-determinism that I realized at first, and my change essentially turned them from non-deterministic output into use-after-free. Except that they weren't necessarily caught by tools because the data wasn't really freed. The new approach is much simpler. The first big simplification is to inline the "visit" code and handle this directly. That works much better, and I'll try to go and clean up the other caller of the visit logic similarly. The second key to the entire approach is that we need to *only* collect names into a stable order at first. We then need to issue all of the actual 'lookup()' calls in the stable order of the names so that we load external results in a stable order. Once we have loaded all the results, the table of results will stop being invalidated and we can walk all of the names again and use the cheap 'noload_lookup()' method to quickly get the results and serialize them. To handle constructors and conversion functions (whose names can't be stably ordered) in this approach, what we do is record only the visible constructor and conversion function names at first. Then, if we have any, we walk the decls of the class and add those names in the order they occur in the AST. The rest falls out naturally. This actually ends up simpler than the previous approach and seems much more robust. It uncovered a latent issue where we were building on-disk hash tables for lookup results when the context was a linkage spec! This happened to dodge all of the assert by some miracle. Instead, add a proper predicate to the DeclContext class and use that which tests both for function contexts and linkage specs. It also uncovered PR23030 where we are forming somewhat bizarre negative lookup results. I've just worked around this with a FIXME in place because fixing this particular Clang bug seems quite hard. I've flipped the first part of the test case I added for stability back on in this commit. I'm taking it gradually to try and make sure the build bots are happy this time. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233249 91177308-0d34-0410-b5e6-96231b3b80d8
-
Eric Christopher authored
certain other options as aliases. There be dragons here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233238 91177308-0d34-0410-b5e6-96231b3b80d8
-
Richard Smith authored
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233234 91177308-0d34-0410-b5e6-96231b3b80d8
-
Manuel Klimek authored
More than 2x speedup on modules builds with large redecl chains. Roughly 15-20% speedup on non-modules builds for very large TUs. Between 2-3% cost in memory on large TUs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233228 91177308-0d34-0410-b5e6-96231b3b80d8
-
Eric Christopher authored
As a note, any target that uses fake target features via command line options will have similar problems. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233227 91177308-0d34-0410-b5e6-96231b3b80d8
-
- Mar 25, 2015
-
-
Eric Christopher authored
they enable/disable. This fixes two things: a) sse4 isn't actually a target feature, don't treat it as one. b) we weren't correctly disabling sse4.1 when we'd pass -mno-sse4 after enabling it, thus passing preprocessor directives and (soon) passing the function attribute as well when we shouldn't. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233223 91177308-0d34-0410-b5e6-96231b3b80d8
-
Ehsan Akhgari authored
Summary: On my system, clang tries to invoke /path/to/arm-linux-androideabi-ld as the linker for Android, and the regex inside the test file considers this as unacceptable. Reviewers: samsonov Subscribers: tberghammer, aemerson, cfe-commits Differential Revision: http://reviews.llvm.org/D8598 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233211 91177308-0d34-0410-b5e6-96231b3b80d8
-
Yunzhong Gao authored
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233210 91177308-0d34-0410-b5e6-96231b3b80d8
-
Jingyue Wu authored
Summary: Due to CUDA's implicit address space casting, the type of a static local variable may be more specific (i.e. with address space qualifiers) than the type expected by the constructor. Emit an addrspacecast in that case. Test Plan: Clang used to crash on the added test. Reviewers: nlewycky, pcc, eliben, rsmith Reviewed By: eliben, rsmith Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D8575 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233208 91177308-0d34-0410-b5e6-96231b3b80d8
-
Kit Barton authored
This patch adds Hardware Transaction Memory (HTM) support supported by ISA 2.07 (POWER8). The intrinsic support is based on GCC one [1], with both 'PowerPC HTM Low Level Built-in Functions' and 'PowerPC HTM High Level Inline Functions' implemented. Along with builtins a new driver switch is added to enable/disable HTM instruction support (-mhtm) and a header with common definitions (mostly to parse the TFHAR register value). The HTM switch also sets a preprocessor builtin HTM. The HTM usage requires a recently newer kernel with PPC HTM enabled. Tested on powerpc64 and powerpc64le. This is send along a llvm patch to enabled the builtins and option switch. [1] https://gcc.gnu.org/onlinedocs/gcc/PowerPC-Hardware-Transactional-Memory-Built-in-Functions.html Phabricator Review: http://reviews.llvm.org/D8248 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233205 91177308-0d34-0410-b5e6-96231b3b80d8
-
Tamas Berghammer authored
On android x86_32 the long double is only 64 bits (compared to 80 bits on linux x86_32) and on android x86_64 the long double is IEEEquad (compared to x87DoubleExtended on linux x86_64). This CL creates new TargetInfo classes for this targets to represent these differences. Differential revision: http://reviews.llvm.org/D8357 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233177 91177308-0d34-0410-b5e6-96231b3b80d8
-
Daniel Jasper authored
This turned the bots to red after r233172 which reverted r233156. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233173 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
Revert "[Modules] When writing out the on-disk hash table for the decl context lookup tables, we need to establish a stable ordering for constructing the hash table. This is trickier than it might seem." This reverts commit r233156. It broke the bots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233172 91177308-0d34-0410-b5e6-96231b3b80d8
-
Justin Bogner authored
When we try to find the end loc for a token, we have to re-lex the token. This was running into a problem when we'd store the end loc of a macro's coverage region, since we wouldn't actually be at the beginning of a token when we tried to re-lex it, leading us to do silly things (and eventually assert) when whitespace or comments followed. This pushes our use of getPreciseTokenLocEnd earlier, so that we won't call it when it doesn't make sense to. It also removes an unnecessary adjustment by 1 that was working around this problem in some cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233169 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
non-determinism here, I just got lucky a bunch of times on my system. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233163 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
This fixes my stress tests non-determinism so far. However, I've not started playing with templates, friends, or terrible macros. I've found at least two more seeming instabilities and am just waiting for a test case to actually trigger them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233162 91177308-0d34-0410-b5e6-96231b3b80d8
-
Ehsan Akhgari authored
Summary: Follow-up to the fix of PR22075. Reviewers: rsmith Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7012 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233161 91177308-0d34-0410-b5e6-96231b3b80d8
-
Ehsan Akhgari authored
Summary: This fixes PR22075. Reviewers: rsmith Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D6828 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233160 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
lookup tables, we need to establish a stable ordering for constructing the hash table. This is trickier than it might seem. Most of these cases are easily handled by sorting the lookup results associated with a specific name that has an identifier. However for constructors and conversion functions, the story is more complicated. Here we need to merge all of the constructors or conversion functions together and this merge needs to be stable. We don't have any stable ordering for either constructors or conversion functions as both would require a stable ordering across types. Instead, when we have constructors or conversion functions in the results, we reconstruct a stable order by walking the decl context in lexical order and merging them in the order their particular declaration names are encountered. This doesn't generalize as there might be found declaration names which don't actually occur within the lexical context, but for constructors and conversion functions it is safe. It does require loading the entire decl context if necessary to establish the ordering but there doesn't seem to be a meaningful way around that. Many thanks to Richard for talking through all of the design choices here. While I wrote the code, he guided all the actual decisions about how to establish the order of things. No test case yet because the test case I have doesn't pass yet -- there are still more sources of non-determinism. However, this is complex enough that I wanted it to go into its own commit in case it causes some unforseen issue or needs to be reverted. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233156 91177308-0d34-0410-b5e6-96231b3b80d8
-
Reid Kleckner authored
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233138 91177308-0d34-0410-b5e6-96231b3b80d8
-
Ahmed Bougacha authored
We previously defaulted to long double, but it's also possible to have a half inc/dec amount, when LangOpts NativeHalfType is set. Currently, that's only true for OpenCL. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233135 91177308-0d34-0410-b5e6-96231b3b80d8
-
- Mar 24, 2015
-
-
Chandler Carruth authored
prune it when we have disabled implicit module generation and thus are not using any cached modules. Also update a test of explicitly generated modules to pass this CC1 flag correctly. This fixes an issue where Clang was dropping files into the source tree while running its tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233117 91177308-0d34-0410-b5e6-96231b3b80d8
-
Chandler Carruth authored
There are two aspects of non-determinism fixed here, which was the minimum required to cause at least an empty module to be deterministic. First, the random number signature is only inserted into the module when we are building modules implicitly. The use case for these random signatures is to work around the very fact that modules are not deterministic in their output when working with the implicitly built and populated module cache. Eventually this should go away entirely when we're confident that Clang is producing deterministic output. Second, the on-disk hash table is populated based on the order of iteration over a DenseMap. Instead, use a MapVector so that we can walk it in insertion order. I've added a test that an empty module, when built twice, produces the same binary PCM file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233115 91177308-0d34-0410-b5e6-96231b3b80d8
-
Sanjay Patel authored
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233111 91177308-0d34-0410-b5e6-96231b3b80d8
-
Sanjay Patel authored
I'm about to commit a patch for: http://reviews.llvm.org/D8567 That patch will break this one existing test case in Clang. I'm not sure if this file is intending to create a Clang dependency on the LLVM IR optimizer, but that's the consequence of specifying -O3 on this test file. My hope is to avoid buildbot rage by removing this check, committing the LLVM patch, and then fixing this check. I don't know how to make a simultaneous commit to Clang and LLVM. I will commit the correct CHECK line fix for this test shortly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233109 91177308-0d34-0410-b5e6-96231b3b80d8
-
Fariborz Jahanian authored
warning until Xcode removes the warning setting. rdar://20262140 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233093 91177308-0d34-0410-b5e6-96231b3b80d8
-
Aaron Ballman authored
Patch by Joe Ranieri! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233085 91177308-0d34-0410-b5e6-96231b3b80d8
-
Aaron Ballman authored
http://bb.pgr.jp/builders/ninja-clang-i686-msc18-R/builds/572 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233082 91177308-0d34-0410-b5e6-96231b3b80d8
-