- Nov 17, 2017
-
-
Zhen Cao authored
Differential Revision: https://reviews.llvm.org/D39737 This is the second attempt to commit this. The test was broken on Linux in the first attempt. llvm-svn: 318560
-
Reid Kleckner authored
llvm-svn: 318559
-
Rafael Espindola authored
It is private to llvm. Instead use llvm/Config/llvm-config.h and check LLVM_ON_UNIX. That is the same guard that clang uses before including unistd.h. llvm-svn: 318558
-
Matt Arsenault authored
This is mostly moving VMEM clause breaking into the hazard recognizer. Also move another hazard currently handled in the waitcnt pass. Also stops breaking clauses unless xnack is enabled. llvm-svn: 318557
-
Reid Kleckner authored
Do not show it when `if` or `else` come from macros. E.g., #define USED(A) if (A); else #define SOME_IF(A) if (A) void test() { // No warnings are shown in those cases now. USED(0); SOME_IF(0); } Patch by Ilya Biryukov! Differential Revision: https://reviews.llvm.org/D40185 llvm-svn: 318556
-
Vedant Kumar authored
This fixes an issue seen on the coverage bot: http://lab.llvm.org:8080/green/view/Experimental/job/clang-stage2-coverage-R/1930 Profile merging shouldn't fail if a single counter mismatch is detected. llvm-svn: 318555
-
Alexander Shaposhnikov authored
DWO/DWP should not be indexed directly. Instead, the corresponding base file should be used. This diff adds an assert to DWARFCompileUnit::Index and adjusts the methods SymbolFileDWARF::FindCompleteObjCDefinitionTypeForDIE, SymbolFileDWARF::GetObjCMethodDIEOffsets accordingly. Differential revision: https://reviews.llvm.org/D39825 llvm-svn: 318554
-
Jonas Hahnfeld authored
The refactoring in r318407 transiently includes abi-breaking.h which defines EnableABIBreakingChecks. This breaks my Debug build because this fuzzer did not link in Support with the symbol. Differential Revision: https://reviews.llvm.org/D40190 llvm-svn: 318553
-
Alex Lorenz authored
rdar://35409566 Differential Revision: https://reviews.llvm.org/D40141 llvm-svn: 318552
-
Jun Bum Lim authored
Summary: This change fix PR35342 by replacing only the current use with undef in unreachable blocks. Reviewers: efriedma, mcrosier, igor-laevsky Reviewed By: efriedma Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D40184 llvm-svn: 318551
-
Rafael Espindola authored
This move some of the complexity over to the lower level TempFile. It also makes it a bit more explicit where errors are ignored since we now have a call to consumeError. llvm-svn: 318550
-
Chandler Carruth authored
making it no longer even remotely simple. The pass will now be more of a "full loop unswitching" pass rather than anything substantively simpler than any other approach. I plan to rename it accordingly once the dust settles. The key ideas of the new loop unswitcher are carried over for non-trivial unswitching: 1) Fully unswitch a branch or switch instruction from inside of a loop to outside of it. 2) Update the CFG and IR. This avoids needing to "remember" the unswitched branches as well as avoiding excessively cloning and reliance on complex parts of simplify-cfg to cleanup the cfg. 3) Update the analyses (where we can) rather than just blowing them away or relying on something else updating them. Sadly, #3 is somewhat compromised here as the dominator tree updates were too complex for me to want to reason about. I will need to make another attempt to do this now that we have a nice dynamic update API for dominators. However, we do adhere to #3 w.r.t. LoopInfo. This approach also adds an important principls specific to non-trivial unswitching: not *all* of the loop will be duplicated when unswitching. This fact allows us to compute the cost in terms of how much *duplicate* code is inserted rather than just on raw size. Unswitching conditions which essentialy partition loops will work regardless of the total loop size. Some remaining issues that I will be addressing in subsequent commits: - Handling unstructured control flow. - Unswitching 'switch' cases instead of just branches. - Moving to the dynamic update API for dominators. Some high-level, interesting limitationsV that folks might want to push on as follow-ups but that I don't have any immediate plans around: - We could be much more clever about not cloning things that will be deleted. In fact, we should be able to delete *nothing* and do a minimal number of clones. - There are many more interesting selection criteria for which branch to unswitch that we might want to look at. One that I'm interested in particularly are a set of conditions which all exit the loop and which can be merged into a single unswitched test of them. Differential revision: https://reviews.llvm.org/D34200 llvm-svn: 318549
-
Peter Collingbourne authored
Now that our support for PDB emission is reasonably good, there is no longer a need to emit a COFF symbol table. Also fix a bug where we would fail to emit a string table for long section names if /debug was not specified. Differential Revision: https://reviews.llvm.org/D40189 llvm-svn: 318548
-
Reid Kleckner authored
Summary: Many small functions have identical unwind info because they push the same sets of CSRs in the same order and have the same stack and prologue size. The VC linker merges duplicate .xdata, and so should LLD. This reduces the .xdata section size of clang.exe from 1.8MB to 94KB. Reviewers: pcc, ruiu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D40160 llvm-svn: 318547
-
Peter Collingbourne authored
PDB emission now works well enough that we can rely on it for these tests to pass. Differential Revision: https://reviews.llvm.org/D40188 llvm-svn: 318546
-
Ahmed Bougacha authored
The object is provided by the objc runtime and is never visible in the module itself, but even so, the address point we compute points into it, and "+16" is guaranteed not to overflow. This matches the c++ vtable IRGen. Note that I'm not entirely convinced the 'i8*' type is correct here: at the IR level, we're accessing memory that's outside the global object. But we don't control the allocation, so it's not obviously wrong either. But either way, this is only in a global initializer, so I don't think it's going to be mucked with. Filed PR35352 to discuss that. llvm-svn: 318545
-
Ilya Biryukov authored
llvm-svn: 318544
-
Justin Bogner authored
If a vreg's bank is specified in the registers block and one of its defs or uses also specifies the bank, we end up checking that the RegBank is equal to diagnose conflicting banks. The problem comes up for generic vregs, where we weren't fully initializing the VRegInfo when parsing the registers block, so we'd end up comparing a null pointer to uninitialized memory. This fixes a non-deterministic failure when round tripping through MIR with generic vregs. llvm-svn: 318543
-
Simon Pilgrim authored
Reduces spsce used and makes it easier to compare the 2 values for the equivalent instructions llvm-svn: 318541
-
Volodymyr Sapsai authored
The assertion was introduced in r317853 but there are cases when a call isn't handled either as direct or indirect. In this case we add a reference graph edge but not a call graph edge. Reviewers: tejohnson Reviewed By: tejohnson Subscribers: mehdi_amini, inglorion, eraman, hiraditya, efriedma, llvm-commits Differential Revision: https://reviews.llvm.org/D40056 llvm-svn: 318540
-
Sam Clegg authored
This linker backend is still a work in progress but is enough to link simple programs including linking against library archives. Differential Revision: https://reviews.llvm.org/D34851 llvm-svn: 318539
-
Eugene Zelenko authored
[AST] Partially revert r318341 to fix two broken tests on llvm-clang-x86_64-expensive-checks-win (NFC). llvm-svn: 318538
-
Martin Probst authored
Summary: clang-format already removes empty lines at the beginning & end of blocks: int x() { foo(); // lines before and after will be removed. } However because lamdas and arrow functions are parsed as expressions, the existing logic to remove empty lines in UnwrappedLineFormatter doesn't handle them. This change special cases arrow functions in ContinuationIndenter to remove empty lines: x = []() { foo(); // lines before and after will now be removed. }; Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D40178 llvm-svn: 318537
-
Alexey Bataev authored
Added codegen support for `target simd` directive. llvm-svn: 318536
-
Rafael Espindola authored
llvm-svn: 318535
-
Rafael Espindola authored
I don't think there is any functionality change, but the code is easier to understand IMHO. llvm-svn: 318534
-
Rafael Espindola authored
This reverts commit r318528. MC/AsmParser/preserve-comments-crlf.s fails on linux. llvm-svn: 318533
-
Michal Gorny authored
In recent versions of Solaris 11.4 (previously 12), ld -V output went to stdout instead of stderr. Since AddLLVM.cmake only expects it on stderr, Solaris ld wasn't properly detected and options not understood by it are passed during the build. The following patch fixes this, allowing for both variants. Tested on i386-pc-solaris2.11.4 (on top of D35755 which is needed for proper Solaris support). Patch by Rainer Orth. Differential Revision: https://reviews.llvm.org/D39601 llvm-svn: 318532
-
Evandro Menezes authored
Improve the accuracy of the model by specifying the proper number of uops. llvm-svn: 318531
-
Stephan Bergmann authored
llvm-svn: 318530
-
Dave Lee authored
Summary: The ArgumentsAdjuster returned from `getClangStripDependencyFileAdjuster` will skip dependency flags, and also their associated values for those flags that take an argument. This change corrects the handling of the `-MD` and `-MMD` flags, which do not take an argument. Reviewers: saugustine, klimek, alexshap Reviewed By: alexshap Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D40024 llvm-svn: 318529
-
Zhen Cao authored
Differential Revision: https://reviews.llvm.org/D39737 llvm-svn: 318528
-
Jonas Hahnfeld authored
These tests were failing rarely on my MacBook when there was some activity in the background. Read: one of a thousand executions? * sections.c missed the sorting based on thread ids. This worked as long as the master thread finished its section before the worker thread started the second one but failed if the master thread was put to sleep by the OS. * The checks in single.c assumed that the master thread executes the single region which works most of the time because it is usually faster than the newly spawned worker thread. Differential Revision: https://reviews.llvm.org/D39853 llvm-svn: 318527
-
Dmitry Preobrazhensky authored
See bug 35148: https://bugs.llvm.org//show_bug.cgi?id=35148 Reviewers: tamazov, SamWot, arsenm Differential Revision: https://reviews.llvm.org/D39492 llvm-svn: 318526
-
Krasimir Georgiev authored
Summary: Adds text proto filename detection. Reviewers: klimek Reviewed By: klimek Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D40120 llvm-svn: 318525
-
Ben Dunbobbin authored
Fixed broken comparison. borked by: rL284966 (see: https://reviews.llvm.org/D25730). Differential Revision: https://reviews.llvm.org/D40119 This is a second attempt to commit this. The first attempt broke lld and gold tests that had been written against the incorrect behaivour. llvm-svn: 318524
-
Gabor Horvath authored
llvm-svn: 318523
-
Gabor Horvath authored
Finds copy constructors where the constructor don't call the copy constructor of the base class. ``` class X : public Copyable { X(const X &other) {} // Copyable(other) is missing }; ``` Differential Revision: https://reviews.llvm.org/D33722 llvm-svn: 318522
-
Andrew Ng authored
Fix test as it is assuming that the cache pruning is always being performed by default. Explicitly set prune interval to 0s to ensure pruning is always performed. llvm-svn: 318520
-
George Rimar authored
Recently we teached LLD to report line numbers for duplicate variables definitions, though currently LLD is unable to do that for case when strings are not built in .debug_info, but stored in .debug_str instead. That is because out LLDDwarfObj does not handle .debug_str yet. Patch fixes that. Differential revision: https://reviews.llvm.org/D39542 llvm-svn: 318519
-