1; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ 2; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s 3; 4; This crashed our codegen at some point, verify it runs through 5; 6; CHECK: polly.start 7; 8target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 9 10%struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606 = type { ptr, ptr, ptr } 11%struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588 = type { i32, ptr, i32, i32, i32, i32, %struct.anon.0.30.63.96.327.492.855.921.954.987.1053.2041.2140.2173.2585, ptr, %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586, %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586, %struct.anon.1.32.65.98.329.494.857.923.956.989.1055.2043.2142.2175.2587, i32, ptr } 12%struct.Production.29.62.95.326.491.854.920.953.986.1052.2040.2139.2172.2584 = type { ptr, i32, %struct.anon.9.42.75.306.471.834.900.933.966.1032.2020.2119.2152.2581, i32, i8, ptr, [8 x ptr], [8 x ptr], ptr, ptr, ptr, ptr } 13%struct.anon.9.42.75.306.471.834.900.933.966.1032.2020.2119.2152.2581 = type { i32, i32, ptr, [3 x ptr] } 14%struct.Declaration.13.46.79.310.475.838.904.937.970.1036.2024.2123.2156.2582 = type { ptr, i32, i32 } 15%struct.Term.18.51.84.315.480.843.909.942.975.1041.2029.2128.2161.2583 = type { i32, i32, i32, i32, i32, ptr, i32, i8, ptr } 16%struct.anon.0.30.63.96.327.492.855.921.954.987.1053.2041.2140.2173.2585 = type { i32, i32, ptr, [3 x ptr] } 17%struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591 = type { i32, i32, ptr, %union.anon.11.44.77.308.473.836.902.935.968.1034.2022.2121.2154.2590 } 18%union.anon.11.44.77.308.473.836.902.935.968.1034.2022.2121.2154.2590 = type { %struct.Unresolved.10.43.76.307.472.835.901.934.967.1033.2021.2120.2153.2589 } 19%struct.Unresolved.10.43.76.307.472.835.901.934.967.1033.2021.2120.2153.2589 = type { ptr, i32 } 20%struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586 = type { ptr, i32 } 21%struct.anon.1.32.65.98.329.494.857.923.956.989.1055.2043.2142.2175.2587 = type { i32, i32, ptr, [3 x ptr] } 22%struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605 = type { i32, i64, %struct.anon.2.14.47.80.311.476.839.905.938.971.1037.2025.2124.2157.2592, %struct.anon.3.15.48.81.312.477.840.906.939.972.1038.2026.2125.2158.2593, %struct.VecGoto.17.50.83.314.479.842.908.941.974.1040.2028.2127.2160.2595, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599, %struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599, %struct.Scanner.27.60.93.324.489.852.918.951.984.1050.2038.2137.2170.2604, i8, ptr, i32, ptr, ptr, ptr, ptr } 23%struct.anon.2.14.47.80.311.476.839.905.938.971.1037.2025.2124.2157.2592 = type { i32, i32, ptr, [3 x ptr] } 24%struct.anon.3.15.48.81.312.477.840.906.939.972.1038.2026.2125.2158.2593 = type { i32, i32, ptr, [3 x ptr] } 25%struct.VecGoto.17.50.83.314.479.842.908.941.974.1040.2028.2127.2160.2595 = type { i32, i32, ptr, [3 x ptr] } 26%struct.Goto.16.49.82.313.478.841.907.940.973.1039.2027.2126.2159.2594 = type { ptr, ptr } 27%struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597 = type { i32, i32, ptr, [3 x ptr] } 28%struct.Action.19.52.85.316.481.844.910.943.976.1042.2030.2129.2162.2596 = type { i32, ptr, ptr, ptr, i32, ptr } 29%struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599 = type { i32, i32, ptr, [3 x ptr] } 30%struct.Hint.21.54.87.318.483.846.912.945.978.1044.2032.2131.2164.2598 = type { i32, ptr, ptr } 31%struct.Scanner.27.60.93.324.489.852.918.951.984.1050.2038.2137.2170.2604 = type { %struct.VecScanState.25.58.91.322.487.850.916.949.982.1048.2036.2135.2168.2602, %struct.VecScanStateTransition.26.59.92.323.488.851.917.950.983.1049.2037.2136.2169.2603 } 32%struct.VecScanState.25.58.91.322.487.850.916.949.982.1048.2036.2135.2168.2602 = type { i32, i32, ptr, [3 x ptr] } 33%struct.ScanState.24.57.90.321.486.849.915.948.981.1047.2035.2134.2167.2601 = type { i32, [256 x ptr], %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, [256 x ptr] } 34%struct.ScanStateTransition.23.56.89.320.485.848.914.947.980.1046.2034.2133.2166.2600 = type { i32, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597 } 35%struct.VecScanStateTransition.26.59.92.323.488.851.917.950.983.1049.2037.2136.2169.2603 = type { i32, i32, ptr, [3 x ptr] } 36 37; Function Attrs: nounwind 38declare noalias ptr @malloc() #0 39 40; Function Attrs: nounwind uwtable 41define void @build_eq() #1 { 42entry: 43 %call = tail call noalias ptr @malloc() #2 44 br label %for.cond.preheader 45 46for.cond.preheader: ; preds = %for.cond.preheader, %entry 47 br i1 undef, label %for.cond.316.preheader, label %for.cond.preheader 48 49for.cond.316.preheader: ; preds = %for.cond.preheader 50 br i1 undef, label %for.cond.400.preheader, label %for.body.321 51 52for.cond.400.preheader: ; preds = %for.inc.397, %for.cond.316.preheader 53 br i1 undef, label %for.end.423, label %for.body.405 54 55for.body.321: ; preds = %for.inc.397, %for.cond.316.preheader 56 br i1 undef, label %for.inc.397, label %land.lhs.true.331 57 58land.lhs.true.331: ; preds = %for.body.321 59 br i1 undef, label %for.inc.397, label %if.then.334 60 61if.then.334: ; preds = %land.lhs.true.331 62 %0 = load ptr, ptr %call, align 8 63 %1 = load ptr, ptr undef, align 8 64 br i1 undef, label %for.inc.397, label %land.lhs.true.369 65 66land.lhs.true.369: ; preds = %if.then.334 67 %n380 = getelementptr inbounds %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588, ptr %1, i64 0, i32 6, i32 0 68 %2 = load i32, ptr %n380, align 8 69 %cmp381 = icmp eq i32 %2, 2 70 br i1 %cmp381, label %if.then.383, label %for.inc.397 71 72if.then.383: ; preds = %land.lhs.true.369 73 %reduces_to385 = getelementptr inbounds %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605, ptr %0, i64 0, i32 14 74 store ptr undef, ptr %reduces_to385, align 8 75 %diff_rule386 = getelementptr inbounds %struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606, ptr %call, i64 0, i32 1 76 %3 = load i64, ptr %diff_rule386, align 8 77 %4 = load ptr, ptr %call, align 8 78 br label %for.inc.397 79 80for.inc.397: ; preds = %if.then.383, %land.lhs.true.369, %if.then.334, %land.lhs.true.331, %for.body.321 81 br i1 undef, label %for.body.321, label %for.cond.400.preheader 82 83for.body.405: ; preds = %for.cond.400.preheader 84 unreachable 85 86for.end.423: ; preds = %for.cond.400.preheader 87 ret void 88} 89