Index: llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
===================================================================
--- llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
+++ llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
@@ -1439,9 +1439,12 @@
       if (PrevSI->isUnordered() && equivalentAddressValues(PrevSI->getOperand(1),
                                                         SI.getOperand(1))) {
         ++NumDeadStore;
-        ++BBI;
+        // Manually add back the original store to the worklist now, so it will
+        // be processed after the operands of the removed store, as this may
+        // expose additional DSE opportunities.
+        Worklist.Add(&SI);
         eraseInstFromFunction(*PrevSI);
-        continue;
+        return nullptr;
       }
       break;
     }
Index: llvm/test/Transforms/InstCombine/pr44552.ll
===================================================================
--- /dev/null
+++ llvm/test/Transforms/InstCombine/pr44552.ll
@@ -0,0 +1,394 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -S -instcombine -instcombine-infinite-loop-threshold=2 < %s | FileCheck %s
+
+; This used to require 100 instcombine iterations to fully optimize.
+
+%struct.S3 = type { i64, %struct.S2, %struct.S1, %struct.S1, %struct.S1, %struct.S0, i16, i32 }
+%struct.S2 = type { i16, i32, i16, i32, i32, i16 }
+%struct.S1 = type { i16, i32, i32, i32, i16, i16, i16 }
+%struct.S0 = type { i32, i16 }
+%struct.S4 = type { %struct.S2 }
+
+@csmith_sink_ = dso_local global i64 0, align 1
+@g_302_7 = internal constant i32 0, align 1
+@g_313_0 = internal global i16 0, align 1
+@g_313_1 = internal global i32 0, align 1
+@g_313_2 = internal global i32 0, align 1
+@g_313_3 = internal global i32 0, align 1
+@g_313_4 = internal global i16 0, align 1
+@g_313_5 = internal global i16 0, align 1
+@g_313_6 = internal global i16 0, align 1
+@g_316 = internal global %struct.S3 zeroinitializer, align 1
+@g_316_1_0 = internal global i16 0, align 1
+@g_316_1_1 = internal global i32 0, align 1
+@g_316_1_2 = internal global i16 0, align 1
+@g_316_1_3 = internal global i32 0, align 1
+@g_316_1_4 = internal global i32 0, align 1
+@g_316_1_5 = internal global i16 0, align 1
+@g_316_3_0 = internal global i16 0, align 1
+@g_316_3_1 = internal global i32 0, align 1
+@g_316_3_2 = internal global i32 0, align 1
+@g_316_3_3 = internal global i32 0, align 1
+@g_316_3_4 = internal global i16 0, align 1
+@g_316_3_5 = internal global i16 0, align 1
+@g_316_3_6 = internal global i16 0, align 1
+@g_316_4_0 = internal global i16 0, align 1
+@g_316_4_1 = internal global i32 0, align 1
+@g_316_4_2 = internal global i32 0, align 1
+@g_316_4_3 = internal global i32 0, align 1
+@g_316_4_4 = internal global i16 0, align 1
+@g_316_4_5 = internal global i16 0, align 1
+@g_316_4_6 = internal global i16 0, align 1
+@g_316_5_0 = internal global i32 0, align 1
+@g_316_5_1 = internal global i16 0, align 1
+@g_316_6 = internal global i16 0, align 1
+@g_316_7 = internal global i32 0, align 1
+@g_317 = internal global %struct.S3 zeroinitializer, align 1
+@g_317_1_0 = internal global i16 0, align 1
+@g_317_1_1 = internal global i32 0, align 1
+@g_317_1_2 = internal global i16 0, align 1
+@g_317_1_3 = internal global i32 0, align 1
+@g_317_1_4 = internal global i32 0, align 1
+@g_317_1_5 = internal global i16 0, align 1
+@g_317_3_0 = internal global i16 0, align 1
+@g_317_3_1 = internal global i32 0, align 1
+@g_317_3_2 = internal global i32 0, align 1
+@g_317_3_3 = internal global i32 0, align 1
+@g_317_3_4 = internal global i16 0, align 1
+@g_317_3_5 = internal global i16 0, align 1
+@g_317_3_6 = internal global i16 0, align 1
+@g_317_4_0 = internal global i16 0, align 1
+@g_317_4_1 = internal global i32 0, align 1
+@g_317_4_2 = internal global i32 0, align 1
+@g_317_4_3 = internal global i32 0, align 1
+@g_317_4_4 = internal global i16 0, align 1
+@g_317_4_5 = internal global i16 0, align 1
+@g_317_4_6 = internal global i16 0, align 1
+@g_317_5_0 = internal global i32 0, align 1
+@g_317_5_1 = internal global i16 0, align 1
+@g_317_6 = internal global i16 0, align 1
+@g_317_7 = internal global i32 0, align 1
+@g_318 = internal global %struct.S3 zeroinitializer, align 1
+@g_318_1_0 = internal global i16 0, align 1
+@g_318_1_1 = internal global i32 0, align 1
+@g_318_1_2 = internal global i16 0, align 1
+@g_318_1_3 = internal global i32 0, align 1
+@g_318_1_4 = internal global i32 0, align 1
+@g_318_1_5 = internal global i16 0, align 1
+@g_318_3_0 = internal global i16 0, align 1
+@g_318_3_1 = internal global i32 0, align 1
+@g_318_3_2 = internal global i32 0, align 1
+@g_318_3_3 = internal global i32 0, align 1
+@g_318_3_4 = internal global i16 0, align 1
+@g_318_3_5 = internal global i16 0, align 1
+@g_318_3_6 = internal global i16 0, align 1
+@g_318_4_0 = internal global i16 0, align 1
+@g_318_4_1 = internal global i32 0, align 1
+@g_318_4_2 = internal global i32 0, align 1
+@g_318_4_3 = internal global i32 0, align 1
+@g_318_4_4 = internal global i16 0, align 1
+@g_318_4_5 = internal global i16 0, align 1
+
+define i16 @main() {
+; CHECK-LABEL: @main(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    store i64 0, i64* @csmith_sink_, align 8
+; CHECK-NEXT:    ret i16 0
+;
+entry:
+  store i64 0, i64* @csmith_sink_, align 1
+  %0 = load i16, i16* @g_313_0, align 1
+  %conv2 = sext i16 %0 to i64
+  store i64 %conv2, i64* @csmith_sink_, align 1
+  %1 = load i32, i32* @g_313_1, align 1
+  %conv3 = zext i32 %1 to i64
+  store i64 %conv3, i64* @csmith_sink_, align 1
+  %2 = load i32, i32* @g_313_2, align 1
+  %conv4 = sext i32 %2 to i64
+  store i64 %conv4, i64* @csmith_sink_, align 1
+  %3 = load i32, i32* @g_313_3, align 1
+  %conv5 = zext i32 %3 to i64
+  store i64 %conv5, i64* @csmith_sink_, align 1
+  %4 = load i16, i16* @g_313_4, align 1
+  %conv6 = sext i16 %4 to i64
+  store i64 %conv6, i64* @csmith_sink_, align 1
+  %5 = load i16, i16* @g_313_5, align 1
+  %conv7 = sext i16 %5 to i64
+  store i64 %conv7, i64* @csmith_sink_, align 1
+  %6 = load i16, i16* @g_313_6, align 1
+  %conv8 = sext i16 %6 to i64
+  store i64 %conv8, i64* @csmith_sink_, align 1
+  %7 = load i64, i64* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 0), align 1
+  store i64 %7, i64* @csmith_sink_, align 1
+  %8 = load i16, i16* @g_316_1_0, align 1
+  %conv9 = sext i16 %8 to i64
+  store i64 %conv9, i64* @csmith_sink_, align 1
+  %9 = load i32, i32* @g_316_1_1, align 1
+  %conv10 = zext i32 %9 to i64
+  store i64 %conv10, i64* @csmith_sink_, align 1
+  %10 = load i16, i16* @g_316_1_2, align 1
+  %conv11 = zext i16 %10 to i64
+  store i64 %conv11, i64* @csmith_sink_, align 1
+  %11 = load i32, i32* @g_316_1_3, align 1
+  %conv12 = sext i32 %11 to i64
+  store i64 %conv12, i64* @csmith_sink_, align 1
+  %12 = load i32, i32* @g_316_1_4, align 1
+  %conv13 = sext i32 %12 to i64
+  store i64 %conv13, i64* @csmith_sink_, align 1
+  %13 = load i16, i16* @g_316_1_5, align 1
+  %conv14 = zext i16 %13 to i64
+  store i64 %conv14, i64* @csmith_sink_, align 1
+  %14 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 2, i32 0), align 1
+  %conv15 = sext i16 %14 to i64
+  store i64 %conv15, i64* @csmith_sink_, align 1
+  %15 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 2, i32 1), align 1
+  %conv16 = zext i32 %15 to i64
+  store i64 %conv16, i64* @csmith_sink_, align 1
+  %16 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 2, i32 2), align 1
+  %conv17 = sext i32 %16 to i64
+  store i64 %conv17, i64* @csmith_sink_, align 1
+  %17 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 2, i32 3), align 1
+  %conv18 = zext i32 %17 to i64
+  store i64 %conv18, i64* @csmith_sink_, align 1
+  %18 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 2, i32 4), align 1
+  %conv19 = sext i16 %18 to i64
+  store i64 %conv19, i64* @csmith_sink_, align 1
+  %19 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 2, i32 5), align 1
+  %conv20 = sext i16 %19 to i64
+  store i64 %conv20, i64* @csmith_sink_, align 1
+  %20 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_316, i32 0, i32 2, i32 6), align 1
+  %conv21 = sext i16 %20 to i64
+  store i64 %conv21, i64* @csmith_sink_, align 1
+  %21 = load i16, i16* @g_316_3_0, align 1
+  %conv22 = sext i16 %21 to i64
+  store i64 %conv22, i64* @csmith_sink_, align 1
+  %22 = load i32, i32* @g_316_3_1, align 1
+  %conv23 = zext i32 %22 to i64
+  store i64 %conv23, i64* @csmith_sink_, align 1
+  %23 = load i32, i32* @g_316_3_2, align 1
+  %conv24 = sext i32 %23 to i64
+  store i64 %conv24, i64* @csmith_sink_, align 1
+  %24 = load i32, i32* @g_316_3_3, align 1
+  %conv25 = zext i32 %24 to i64
+  store i64 %conv25, i64* @csmith_sink_, align 1
+  %25 = load i16, i16* @g_316_3_4, align 1
+  %conv26 = sext i16 %25 to i64
+  store i64 %conv26, i64* @csmith_sink_, align 1
+  %26 = load i16, i16* @g_316_3_5, align 1
+  %conv27 = sext i16 %26 to i64
+  store i64 %conv27, i64* @csmith_sink_, align 1
+  %27 = load i16, i16* @g_316_3_6, align 1
+  %conv28 = sext i16 %27 to i64
+  store i64 %conv28, i64* @csmith_sink_, align 1
+  %28 = load i16, i16* @g_316_4_0, align 1
+  %conv29 = sext i16 %28 to i64
+  store i64 %conv29, i64* @csmith_sink_, align 1
+  %29 = load i32, i32* @g_316_4_1, align 1
+  %conv30 = zext i32 %29 to i64
+  store i64 %conv30, i64* @csmith_sink_, align 1
+  %30 = load i32, i32* @g_316_4_2, align 1
+  %conv31 = sext i32 %30 to i64
+  store i64 %conv31, i64* @csmith_sink_, align 1
+  %31 = load i32, i32* @g_316_4_3, align 1
+  %conv32 = zext i32 %31 to i64
+  store i64 %conv32, i64* @csmith_sink_, align 1
+  %32 = load i16, i16* @g_316_4_4, align 1
+  %conv33 = sext i16 %32 to i64
+  store i64 %conv33, i64* @csmith_sink_, align 1
+  %33 = load i16, i16* @g_316_4_5, align 1
+  %conv34 = sext i16 %33 to i64
+  store i64 %conv34, i64* @csmith_sink_, align 1
+  %34 = load i16, i16* @g_316_4_6, align 1
+  %conv35 = sext i16 %34 to i64
+  store i64 %conv35, i64* @csmith_sink_, align 1
+  %35 = load i32, i32* @g_316_5_0, align 1
+  %conv36 = sext i32 %35 to i64
+  store i64 %conv36, i64* @csmith_sink_, align 1
+  %36 = load i16, i16* @g_316_5_1, align 1
+  %conv37 = zext i16 %36 to i64
+  store i64 %conv37, i64* @csmith_sink_, align 1
+  %37 = load i16, i16* @g_316_6, align 1
+  %conv38 = zext i16 %37 to i64
+  store i64 %conv38, i64* @csmith_sink_, align 1
+  %38 = load i32, i32* @g_316_7, align 1
+  %conv39 = sext i32 %38 to i64
+  store i64 %conv39, i64* @csmith_sink_, align 1
+  %39 = load i64, i64* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 0), align 1
+  store i64 %39, i64* @csmith_sink_, align 1
+  %40 = load i16, i16* @g_317_1_0, align 1
+  %conv40 = sext i16 %40 to i64
+  store i64 %conv40, i64* @csmith_sink_, align 1
+  %41 = load i32, i32* @g_317_1_1, align 1
+  %conv41 = zext i32 %41 to i64
+  store i64 %conv41, i64* @csmith_sink_, align 1
+  %42 = load i16, i16* @g_317_1_2, align 1
+  %conv42 = zext i16 %42 to i64
+  store i64 %conv42, i64* @csmith_sink_, align 1
+  %43 = load i32, i32* @g_317_1_3, align 1
+  %conv43 = sext i32 %43 to i64
+  store i64 %conv43, i64* @csmith_sink_, align 1
+  %44 = load i32, i32* @g_317_1_4, align 1
+  %conv44 = sext i32 %44 to i64
+  store i64 %conv44, i64* @csmith_sink_, align 1
+  %45 = load i16, i16* @g_317_1_5, align 1
+  %conv45 = zext i16 %45 to i64
+  store i64 %conv45, i64* @csmith_sink_, align 1
+  %46 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 2, i32 0), align 1
+  %conv46 = sext i16 %46 to i64
+  store i64 %conv46, i64* @csmith_sink_, align 1
+  %47 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 2, i32 1), align 1
+  %conv47 = zext i32 %47 to i64
+  store i64 %conv47, i64* @csmith_sink_, align 1
+  %48 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 2, i32 2), align 1
+  %conv48 = sext i32 %48 to i64
+  store i64 %conv48, i64* @csmith_sink_, align 1
+  %49 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 2, i32 3), align 1
+  %conv49 = zext i32 %49 to i64
+  store i64 %conv49, i64* @csmith_sink_, align 1
+  %50 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 2, i32 4), align 1
+  %conv50 = sext i16 %50 to i64
+  store i64 %conv50, i64* @csmith_sink_, align 1
+  %51 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 2, i32 5), align 1
+  %conv51 = sext i16 %51 to i64
+  store i64 %conv51, i64* @csmith_sink_, align 1
+  %52 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_317, i32 0, i32 2, i32 6), align 1
+  %conv52 = sext i16 %52 to i64
+  store i64 %conv52, i64* @csmith_sink_, align 1
+  %53 = load i16, i16* @g_317_3_0, align 1
+  %conv53 = sext i16 %53 to i64
+  store i64 %conv53, i64* @csmith_sink_, align 1
+  %54 = load i32, i32* @g_317_3_1, align 1
+  %conv54 = zext i32 %54 to i64
+  store i64 %conv54, i64* @csmith_sink_, align 1
+  %55 = load i32, i32* @g_317_3_2, align 1
+  %conv55 = sext i32 %55 to i64
+  store i64 %conv55, i64* @csmith_sink_, align 1
+  %56 = load i32, i32* @g_317_3_3, align 1
+  %conv56 = zext i32 %56 to i64
+  store i64 %conv56, i64* @csmith_sink_, align 1
+  %57 = load i16, i16* @g_317_3_4, align 1
+  %conv57 = sext i16 %57 to i64
+  store i64 %conv57, i64* @csmith_sink_, align 1
+  %58 = load i16, i16* @g_317_3_5, align 1
+  %conv58 = sext i16 %58 to i64
+  store i64 %conv58, i64* @csmith_sink_, align 1
+  %59 = load i16, i16* @g_317_3_6, align 1
+  %conv59 = sext i16 %59 to i64
+  store i64 %conv59, i64* @csmith_sink_, align 1
+  %60 = load i16, i16* @g_317_4_0, align 1
+  %conv60 = sext i16 %60 to i64
+  store i64 %conv60, i64* @csmith_sink_, align 1
+  %61 = load i32, i32* @g_317_4_1, align 1
+  %conv61 = zext i32 %61 to i64
+  store i64 %conv61, i64* @csmith_sink_, align 1
+  %62 = load i32, i32* @g_317_4_2, align 1
+  %conv62 = sext i32 %62 to i64
+  store i64 %conv62, i64* @csmith_sink_, align 1
+  %63 = load i32, i32* @g_317_4_3, align 1
+  %conv63 = zext i32 %63 to i64
+  store i64 %conv63, i64* @csmith_sink_, align 1
+  %64 = load i16, i16* @g_317_4_4, align 1
+  %conv64 = sext i16 %64 to i64
+  store i64 %conv64, i64* @csmith_sink_, align 1
+  %65 = load i16, i16* @g_317_4_5, align 1
+  %conv65 = sext i16 %65 to i64
+  store i64 %conv65, i64* @csmith_sink_, align 1
+  %66 = load i16, i16* @g_317_4_6, align 1
+  %conv66 = sext i16 %66 to i64
+  store i64 %conv66, i64* @csmith_sink_, align 1
+  %67 = load i32, i32* @g_317_5_0, align 1
+  %conv67 = sext i32 %67 to i64
+  store i64 %conv67, i64* @csmith_sink_, align 1
+  %68 = load i16, i16* @g_317_5_1, align 1
+  %conv68 = zext i16 %68 to i64
+  store i64 %conv68, i64* @csmith_sink_, align 1
+  %69 = load i16, i16* @g_317_6, align 1
+  %conv69 = zext i16 %69 to i64
+  store i64 %conv69, i64* @csmith_sink_, align 1
+  %70 = load i32, i32* @g_317_7, align 1
+  %conv70 = sext i32 %70 to i64
+  store i64 %conv70, i64* @csmith_sink_, align 1
+  %71 = load i64, i64* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 0), align 1
+  store i64 %71, i64* @csmith_sink_, align 1
+  %72 = load i16, i16* @g_318_1_0, align 1
+  %conv71 = sext i16 %72 to i64
+  store i64 %conv71, i64* @csmith_sink_, align 1
+  %73 = load i32, i32* @g_318_1_1, align 1
+  %conv72 = zext i32 %73 to i64
+  store i64 %conv72, i64* @csmith_sink_, align 1
+  %74 = load i16, i16* @g_318_1_2, align 1
+  %conv73 = zext i16 %74 to i64
+  store i64 %conv73, i64* @csmith_sink_, align 1
+  %75 = load i32, i32* @g_318_1_3, align 1
+  %conv74 = sext i32 %75 to i64
+  store i64 %conv74, i64* @csmith_sink_, align 1
+  %76 = load i32, i32* @g_318_1_4, align 1
+  %conv75 = sext i32 %76 to i64
+  store i64 %conv75, i64* @csmith_sink_, align 1
+  %77 = load i16, i16* @g_318_1_5, align 1
+  %conv76 = zext i16 %77 to i64
+  store i64 %conv76, i64* @csmith_sink_, align 1
+  %78 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 2, i32 0), align 1
+  %conv77 = sext i16 %78 to i64
+  store i64 %conv77, i64* @csmith_sink_, align 1
+  %79 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 2, i32 1), align 1
+  %conv78 = zext i32 %79 to i64
+  store i64 %conv78, i64* @csmith_sink_, align 1
+  %80 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 2, i32 2), align 1
+  %conv79 = sext i32 %80 to i64
+  store i64 %conv79, i64* @csmith_sink_, align 1
+  %81 = load i32, i32* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 2, i32 3), align 1
+  %conv80 = zext i32 %81 to i64
+  store i64 %conv80, i64* @csmith_sink_, align 1
+  %82 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 2, i32 4), align 1
+  %conv81 = sext i16 %82 to i64
+  store i64 %conv81, i64* @csmith_sink_, align 1
+  %83 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 2, i32 5), align 1
+  %conv82 = sext i16 %83 to i64
+  store i64 %conv82, i64* @csmith_sink_, align 1
+  %84 = load i16, i16* getelementptr inbounds (%struct.S3, %struct.S3* @g_318, i32 0, i32 2, i32 6), align 1
+  %conv83 = sext i16 %84 to i64
+  store i64 %conv83, i64* @csmith_sink_, align 1
+  %85 = load i16, i16* @g_318_3_0, align 1
+  %conv84 = sext i16 %85 to i64
+  store i64 %conv84, i64* @csmith_sink_, align 1
+  %86 = load i32, i32* @g_318_3_1, align 1
+  %conv85 = zext i32 %86 to i64
+  store i64 %conv85, i64* @csmith_sink_, align 1
+  %87 = load i32, i32* @g_318_3_2, align 1
+  %conv86 = sext i32 %87 to i64
+  store i64 %conv86, i64* @csmith_sink_, align 1
+  %88 = load i32, i32* @g_318_3_3, align 1
+  %conv87 = zext i32 %88 to i64
+  store i64 %conv87, i64* @csmith_sink_, align 1
+  %89 = load i16, i16* @g_318_3_4, align 1
+  %conv88 = sext i16 %89 to i64
+  store i64 %conv88, i64* @csmith_sink_, align 1
+  %90 = load i16, i16* @g_318_3_5, align 1
+  %conv89 = sext i16 %90 to i64
+  store i64 %conv89, i64* @csmith_sink_, align 1
+  %91 = load i16, i16* @g_318_3_6, align 1
+  %conv90 = sext i16 %91 to i64
+  store i64 %conv90, i64* @csmith_sink_, align 1
+  %92 = load i16, i16* @g_318_4_0, align 1
+  %conv91 = sext i16 %92 to i64
+  store i64 %conv91, i64* @csmith_sink_, align 1
+  %93 = load i32, i32* @g_318_4_1, align 1
+  %conv92 = zext i32 %93 to i64
+  store i64 %conv92, i64* @csmith_sink_, align 1
+  %94 = load i32, i32* @g_318_4_2, align 1
+  %conv93 = sext i32 %94 to i64
+  store i64 %conv93, i64* @csmith_sink_, align 1
+  %95 = load i32, i32* @g_318_4_3, align 1
+  %conv94 = zext i32 %95 to i64
+  store i64 %conv94, i64* @csmith_sink_, align 1
+  %96 = load i16, i16* @g_318_4_4, align 1
+  %conv95 = sext i16 %96 to i64
+  store i64 %conv95, i64* @csmith_sink_, align 1
+  %97 = load i16, i16* @g_318_4_5, align 1
+  %conv96 = sext i16 %97 to i64
+  store i64 %conv96, i64* @csmith_sink_, align 1
+  store i64 0, i64* @csmith_sink_, align 1
+  ret i16 0
+}
+