[all-commits] [llvm/llvm-project] b6eed9: [SimplifyCFG] Check if the return instruction caus...

DianQK via All-commits all-commits at lists.llvm.org
Sun Feb 19 03:43:54 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b6eed9a82e0ce530d94a194c88615d6c272e1854
      https://github.com/llvm/llvm-project/commit/b6eed9a82e0ce530d94a194c88615d6c272e1854
  Author: DianQK <dianqk at dianqk.net>
  Date:   2023-02-19 (Sun, 19 Feb 2023)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp
    A llvm/test/Transforms/SimplifyCFG/unreachable-eliminate-on-ret.ll

  Log Message:
  -----------
  [SimplifyCFG] Check if the return instruction causes undefined behavior

This should fix https://github.com/rust-lang/rust/issues/107681.

Return undefined to a noundef return value is undefined.

Example:

```
define noundef i32 @test_ret_noundef(i1 %cond) {
entry:
  br i1 %cond, label %bb1, label %bb2
bb1:
  br label %bb2
bb2:
  %r = phi i32 [ undef, %entry ], [ 1, %bb1 ]
  ret i32 %r
}
```

Differential Revision: https://reviews.llvm.org/D144319




More information about the All-commits mailing list