Compiler projects using llvm
; RUN: opt -licm -verify-memoryssa -S < %s | FileCheck %s
; REQUIRES: asserts

target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"
target triple = "s390x-ibm-linux"

@g_328 = external dso_local local_unnamed_addr global { i32, i16, i32, i8, i8, i32, i32 }, align 4

define dso_local void @func_45() local_unnamed_addr {
; CHECK-LABEL: @func_45()
bb:
  br label %bb7

bb7:                                              ; preds = %bb
  br label %bb8

bb8:                                              ; preds = %bb80, %bb7
  %tmp10 = load i32, i32* getelementptr inbounds ({ i32, i16, i32, i8, i8, i32, i32 }, { i32, i16, i32, i8, i8, i32, i32 }* @g_328, i64 0, i32 5), align 4
  %0 = or i32 %tmp10, 9
  store i32 %0, i32* getelementptr inbounds ({ i32, i16, i32, i8, i8, i32, i32 }, { i32, i16, i32, i8, i8, i32, i32 }* @g_328, i64 0, i32 5), align 4
  br label %bb41.preheader.preheader

bb41.preheader.preheader:                         ; preds = %bb80.thread, %bb8
  br label %bb68

bb84.thread.split.loop.exit67:                    ; preds = %bb71.1
  br label %bb84.thread

bb84.thread.split.loop.exit71:                    ; preds = %bb71.2
  br label %bb84.thread

bb84.thread.split.loop.exit91:                    ; preds = %bb71.1.2
  br label %bb84.thread

bb84.thread:                                      ; preds = %bb84.thread.split.loop.exit91, %bb84.thread.split.loop.exit71, %bb84.thread.split.loop.exit67
  unreachable

bb68:                                             ; preds = %bb41.preheader.preheader
  br i1 false, label %bb71, label %bb80

bb71:                                             ; preds = %bb68
  br label %bb71.1

bb80.thread:                                      ; preds = %bb71.1.2
  br label %bb41.preheader.preheader

bb80:                                             ; preds = %bb68
  br label %bb8

bb71.1:                                           ; preds = %bb71
  br i1 true, label %bb84.thread.split.loop.exit67, label %bb71.2

bb71.2:                                           ; preds = %bb71.1
  br i1 true, label %bb84.thread.split.loop.exit71, label %bb71.145

bb71.145:                                         ; preds = %bb71.2
  br label %bb71.1.2

bb71.1.2:                                         ; preds = %bb71.145
  br i1 true, label %bb84.thread.split.loop.exit91, label %bb80.thread
}