- Feb 27, 2014
-
-
Eric Christopher authored
and update everything accordingly. This can be used to conditionalize the amount of output in the backend based on the amount of debug requested/metadata emission scheme by a front end (e.g. clang). Paired with a commit to clang. llvm-svn: 202332
-
Hans Wennborg authored
Erroring out until we fix the bug means we don't have to keep chasing down this same miscompile in a bunch of different places. Differential Revision: http://llvm-reviews.chandlerc.com/D2890 llvm-svn: 202331
-
Nick Lewycky authored
llvm-svn: 202330
-
Ben Langmuir authored
When true, sets the name of the file to be the name from 'external-contents'. Otherwise, you get the virtual path that the file was looked up by. This will not affect any non-virtual paths, or fully virtual paths (for which there is no reasonable 'external' name anyway). The setting is available globally, but can be overriden on a per-file basis. The goal is that this setting will control which path you see in debug info, diagnostics, etc. which are sensitive to which path is used. That will come in future patches that pass the name through to FileManager. llvm-svn: 202329
-
Ted Kremenek authored
[-Wunreachable-code] Prune out unreachable warnings where a 'break' is preceded by a call to a 'noreturn' function. For example: unreachable(); break; This code is idiomatic and defensive. The fact that 'break' is unreachable here is not interesting. This occurs frequently in LLVM/Clang itself. llvm-svn: 202328
-
Ted Kremenek authored
[CFG] encode unreachable block information for would-have-been successors for calls to 'noreturn' functions. llvm-svn: 202327
-
Ted Kremenek authored
llvm-svn: 202326
-
Ted Kremenek authored
This is to support some analyses, like -Wunreachable-code, that will need to recover the original unprunned CFG edges in order to suppress issues that aren't really bugs in practice. There are two important changes here: - AdjacentBlock replaces CFGBlock* for CFG successors/predecessors. This has the size of 2 pointers, instead of 1. This is unlikely to have a significant memory impact on Sema since a single CFG usually exists at one time, but could impact the memory usage of the static analyzer. This could possibly be optimized down to a single pointer with some cleverness. - Predecessors can now contain null predecessors, which means some analyses doing a reverse traversal will need to take into account. This already exists for successors, which contain successor slots for specific branch kinds (e.g., 'if') that expect a fixed number of successors, even if a branch is not reachable. llvm-svn: 202325
-
Reid Kleckner authored
llvm-svn: 202324
-
Eric Christopher authored
llvm-svn: 202323
-
Rui Ueyama authored
llvm-svn: 202322
-
Eric Christopher authored
llvm-svn: 202321
-
Reid Kleckner authored
Clang is using llvm::StructType::isOpaque() as a way of signaling if we've finished record type conversion in CodeGenTypes::isRecordLayoutComplete(). However, Clang was setting the body of the type before it finished laying out the type as a base type. Laying out the %class.C.base LLVM type attempts to convert more types, eventually recursively attempting to layout 'C' again, at which point we would say that layout was complete, even though we were still in the middle of it. By not setting the body, we correctly signal that layout is not complete, and things work as expected. At some point, it might be worth refactoring this to avoid looking at the LLVM IR types under construction. llvm-svn: 202320
-
Adrian Prantl authored
llvm-svn: 202319
-
Eric Christopher authored
llvm-svn: 202318
-
Adrian Prantl authored
llvm-svn: 202317
-
Eric Christopher authored
llvm-svn: 202316
-
Andrew Trick authored
llvm-svn: 202315
-
Rui Ueyama authored
llvm-svn: 202314
-
Adrian Prantl authored
more obvious. llvm-svn: 202313
-
Matt Arsenault authored
It is already fully handled in AMDGPUISelDAGToDAG. llvm-svn: 202312
-
- Feb 26, 2014
-
-
Greg Clayton authored
A better long term fix for stopping the process when it is running by writing to the pipe that was used for cancel. We now write a 'q' to indicate to exit the IOHandlerProcessSTDIO::Run(), and a 'i' to interrupt the process. This should make this code safer to use in a signal handler function. llvm-svn: 202311
-
Andrew Trick authored
llvm-svn: 202310
-
Ed Maste authored
llvm-svn: 202309
-
Nico Rieck authored
llvm-svn: 202308
-
Alp Toker authored
This is a continuation of r199686. llvm-svn: 202307
-
Jason Molenda authored
4-byte reserved area when reading the libBacktraceRecording API results. Also, add a little logging about queues being created. <rdar://problem/16127752> llvm-svn: 202306
-
Rafael Espindola authored
Before this patch the globals were created with the wrong linkage and patched afterwards. From the comments it looks like something would complain about having an internal GV with no initializer. At least in clang the verifier will only run way after we set the initializer, so that is not a problem. This patch should be a nop. It just figures out the linkage earlier and converts the old calls to setLinkage to asserts. The only case where that is not possible is when we first see a weak import that is then implemented. In that case we have to change the linkage, but that is the only setLinkage left. llvm-svn: 202305
-
Andrew Trick authored
This handles pathological cases in which we see 2x increase in spill code for large blocks (~50k instructions). I don't have a unit test for this behavior. Fixes rdar://16072279. llvm-svn: 202304
-
Reid Kleckner authored
This way it gets picked up for all sanitizer libs, both sanitizer_common and asan. I believe those are the only libs that build with asan. There should be no need to set the __func__ definition inside clang_compile. llvm-svn: 202303
-
Rafael Espindola authored
Using @executable_path/../lib matches what we have on Makefiles and works with older versions of OS X too. llvm-svn: 202302
-
Quentin Colombet authored
The current approach to lower a vsetult is to flip the sign bit of the operands, swap the operands and then use a (signed) pcmpgt. psubus (unsigned saturating subtract) can be used to emulate a vsetult more efficiently: + case ISD::SETULT: { + // If the comparison is against a constant we can turn this into a + // setule. With psubus, setule does not require a swap. This is + // beneficial because the constant in the register is no longer + // destructed as the destination so it can be hoisted out of a loop. I also enable lowering via psubus in a few other cases where it's clearly beneficial: setule and setuge if minu/maxu cannot be used. rdar://problem/14338765 Patch by Adam Nemet <anemet@apple.com>. llvm-svn: 202301
-
Nico Rieck authored
Upgrades the warning to an error and clarifies the message by treating the definition as error instead of the attribute. llvm-svn: 202300
-
Rafael Espindola authored
llvm-svn: 202299
-
Joerg Sonnenberger authored
llvm-svn: 202298
-
Joerg Sonnenberger authored
can't build anything here. llvm-svn: 202297
-
Joerg Sonnenberger authored
llvm-svn: 202296
-
Aaron Ballman authored
llvm-svn: 202295
-
Hal Finkel authored
The aggressive anti-dependency breaker scans instructions, bottom-up, within the scheduling region in order to find opportunities where register renaming can be used to break anti-dependencies. Unfortunately, the aggressive anti-dep breaker was treating a register definition as defining all of that register's aliases (including super registers). This behavior is incorrect when the super register is live and there are other definitions of subregisters of the super register. For example, given the following sequence: %CR2EQ<def> = CROR %CR3UN, %CR3UN<kill> %CR2GT<def> = IMPLICIT_DEF %X4<def> = MFOCRF8 %CR2 the analysis of the first subregister definition would work as expected: Anti: %CR2GT<def> = IMPLICIT_DEF Def Groups: CR2GT=g194->g0(via CR2) Antidep reg: CR2GT (zero group) Use Groups: but the analysis of the second one would not: Anti: %CR2EQ<def> = CROR %CR3UN, %CR3UN<kill> Def Groups: CR2EQ=g195 Antidep reg: CR2EQ Rename Candidates for Group g195: ... because, when processing the %CR2GT<def>, we'd mark all super registers of %CR2GT (%CR2 in this case) as defined. As a result, when processing %CR2EQ<def>, %CR2 no longer appears to be live, and %CR2EQ<def>'s group is not %unioned with the %CR2 group. I don't have an in-tree test case for this yet (and even if I did, I don't have a small one). llvm-svn: 202294
-
Reid Kleckner authored
We should apply fastcc whenever profitable. We can expand this list, but there are lots of conventions with performance implications that we don't want to change. Differential Revision: http://llvm-reviews.chandlerc.com/D2705 llvm-svn: 202293
-