Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | [Verifier] Reject PHIs using defs from own block. | Michael Kruse | 2016-03-26 | 1 | -0/+13 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reject the following IR as malformed (assuming that %entry, %next are not in a loop): next: %y = phi i32 [ 0, %entry ] %x = phi i32 [ %y, %entry ] Such PHI nodes came up in PR26718. While there was no consensus on whether or not this is valid IR, most opinions on that bug and in a discussion on the llvm-dev mailing list tended towards a "strict interpretation" (term by Joseph Tremoulet) of PHI node uses. Also, the language reference explicitly states that "the use of each incoming value is deemed to occur on the edge from the corresponding predecessor block to the current block" and `DominatorTree::dominates(Instruction*, Use&)` uses this definition as well. For the code mentioned in PR15384, clang does not compile to such PHIs (anymore?). The test case still hangs when replacing `%tmp6` with `%tmp` in revisions before r176366 (where PR15384 has been fixed). The occurrence of %tmp6 therefore was probably unintentional. Its value is not used except in other PHIs. Reviewers: majnemer, reames, JosephTremoulet, bkramer, grosser, jdoerfert, kparzysz, sanjoy Differential Revision: http://reviews.llvm.org/D18443 llvm-svn: 264528 | ||||
* | Move the personality function from LandingPadInst to Function | David Majnemer | 2015-06-17 | 1 | -4/+4 |
| | | | | | | | | | | | | | | | | | | | The personality routine currently lives in the LandingPadInst. This isn't desirable because: - All LandingPadInsts in the same function must have the same personality routine. This means that each LandingPadInst beyond the first has an operand which produces no additional information. - There is ongoing work to introduce EH IR constructs other than LandingPadInst. Moving the personality routine off of any one particular Instruction and onto the parent function seems a lot better than have N different places a personality function can sneak onto an exceptional function. Differential Revision: http://reviews.llvm.org/D10429 llvm-svn: 239940 | ||||
* | Convert the uses of '|&' to use '2>&1 |' instead, which works on old | Chandler Carruth | 2012-07-02 | 1 | -1/+1 |
| | | | | | | | | | | versions of Bash. In addition, I can back out the change to the lit built-in shell test runner to support this. This should fix the majority of fallout on Darwin, but I suspect there will be a few straggling issues. llvm-svn: 159544 | ||||
* | Use dominates(Instruction, Use) in the verifier. | Rafael Espindola | 2012-06-01 | 1 | -2/+2 |
| | | | | | | | This removes a bit of context from the verifier erros, but reduces code duplication in a fairly critical part of LLVM and makes dominates easier to test. llvm-svn: 157845 | ||||
* | Add some tests checking that the verifier rejects cases where a definition | Rafael Espindola | 2012-06-01 | 1 | -0/+57 |
doesn't dominate a use. llvm-svn: 157829 |