1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/test/Transforms/BDCE/dead-void-ro.ll
Nikita Popov 93b123f786 [DCE] Don't remove non-willreturn calls
In both ADCE and BDCE (via DemandedBits) we should not remove
instructions that are not guaranteed to return. This issue was
pointed out by fhahn in the recent llvm-dev thread.

Differential Revision: https://reviews.llvm.org/D96993
2021-02-19 12:35:40 +01:00

19 lines
468 B
LLVM

; RUN: opt -S -bdce < %s | FileCheck %s
target triple = "x86_64-unknown-linux-gnu"
define void @PR34211(i16* %p) {
; CHECK-LABEL: @PR34211
%not_demanded_but_not_dead = load volatile i16, i16* %p
call void @no_side_effects_so_dead(i16 %not_demanded_but_not_dead)
ret void
; CHECK: %not_demanded_but_not_dead = load volatile i16, i16* %p
; CHECK-NEXT: ret void
}
declare void @no_side_effects_so_dead(i16) #0
attributes #0 = { nounwind readnone willreturn }