Nikita Popov 3dd8c9176b [LICM] Remove AST-based implementation
MSSA-based LICM has been enabled by default for a few years now.
This drops the old AST-based implementation. Using loop(licm) will
result in a fatal error, the use of loop-mssa(licm) is required
(or just licm, which defaults to loop-mssa).

Note that the core canSinkOrHoistInst() logic has to retain AST
support for now, because it is shared with LoopSink.

Differential Revision: https://reviews.llvm.org/D108244
2021-08-18 20:21:53 +02:00

28 lines
1.0 KiB
LLVM

; RUN: opt -disable-basic-aa -alias-set-saturation-threshold=2 -passes='loop-mssa(licm)' -S < %s | FileCheck %s
; REQUIRES: asserts
; CHECK-LABEL: @f1()
define void @f1() {
%lc1.10 = alloca [3 x i16]
br label %bb1
bb1: ; preds = %bb6, %0
store i16 undef, i16* undef
br label %bb2
bb2: ; preds = %bb8, %bb1
%_tmp18.fca.0.gep = getelementptr inbounds [3 x i16], [3 x i16]* %lc1.10, i32 0, i32 0
%_tmp18.fca.0.load = load i16, i16* %_tmp18.fca.0.gep
%_tmp18.fca.1.gep = getelementptr inbounds [3 x i16], [3 x i16]* %lc1.10, i32 0, i32 1
%_tmp18.fca.1.load = load i16, i16* %_tmp18.fca.1.gep
%_tmp18.fca.2.gep = getelementptr inbounds [3 x i16], [3 x i16]* %lc1.10, i32 0, i32 2
%_tmp18.fca.2.load = load i16, i16* %_tmp18.fca.2.gep
br label %bb8
bb8: ; preds = %bb2
br i1 undef, label %bb2, label %bb6
bb6: ; preds = %bb8
br label %bb1
}