llvm-project/llvm/test/CodeGen/PowerPC/2010-04-01-MachineCSEBug.ll
Kai Nacke 427fb35192 [PPC] Opaque pointer migration, part 1.
The LIT test cases were migrated with the script provided by
Nikita Popov. Due to the size of the change it is split into
several parts.

Reviewed By: nemanja, amyk, nikic, PowerPC

Differential Revision: https://reviews.llvm.org/D135470
2022-10-11 17:24:06 +00:00

71 lines
2.8 KiB
LLVM

; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu
; rdar://7819990
%0 = type { i32 }
%1 = type { i64 }
%struct.Buffer = type { [1024 x i8], i64, i64, i64 }
%struct.InStream = type { %struct.Buffer, %0, %1, ptr, ptr }
%struct.InStreamMethods = type { ptr, ptr, ptr, ptr }
define i64 @t(ptr %is) nounwind optsize ssp {
entry:
br i1 undef, label %is_read_byte.exit, label %bb.i
bb.i: ; preds = %entry
br label %is_read_byte.exit
is_read_byte.exit: ; preds = %bb.i, %entry
br i1 undef, label %is_read_byte.exit22, label %bb.i21
bb.i21: ; preds = %is_read_byte.exit
unreachable
is_read_byte.exit22: ; preds = %is_read_byte.exit
br i1 undef, label %is_read_byte.exit19, label %bb.i18
bb.i18: ; preds = %is_read_byte.exit22
br label %is_read_byte.exit19
is_read_byte.exit19: ; preds = %bb.i18, %is_read_byte.exit22
br i1 undef, label %is_read_byte.exit16, label %bb.i15
bb.i15: ; preds = %is_read_byte.exit19
unreachable
is_read_byte.exit16: ; preds = %is_read_byte.exit19
%0 = shl i64 undef, 32 ; <i64> [#uses=1]
br i1 undef, label %is_read_byte.exit13, label %bb.i12
bb.i12: ; preds = %is_read_byte.exit16
unreachable
is_read_byte.exit13: ; preds = %is_read_byte.exit16
%1 = shl i64 undef, 24 ; <i64> [#uses=1]
br i1 undef, label %is_read_byte.exit10, label %bb.i9
bb.i9: ; preds = %is_read_byte.exit13
unreachable
is_read_byte.exit10: ; preds = %is_read_byte.exit13
%2 = shl i64 undef, 16 ; <i64> [#uses=1]
br i1 undef, label %is_read_byte.exit7, label %bb.i6
bb.i6: ; preds = %is_read_byte.exit10
br label %is_read_byte.exit7
is_read_byte.exit7: ; preds = %bb.i6, %is_read_byte.exit10
%3 = shl i64 undef, 8 ; <i64> [#uses=1]
br i1 undef, label %is_read_byte.exit4, label %bb.i3
bb.i3: ; preds = %is_read_byte.exit7
unreachable
is_read_byte.exit4: ; preds = %is_read_byte.exit7
%4 = or i64 0, %0 ; <i64> [#uses=1]
%5 = or i64 %4, %1 ; <i64> [#uses=1]
%6 = or i64 %5, %2 ; <i64> [#uses=1]
%7 = or i64 %6, %3 ; <i64> [#uses=1]
%8 = or i64 %7, 0 ; <i64> [#uses=1]
ret i64 %8
}