1; RUN: llc -mtriple=hexagon < %s | FileCheck %s 2 3; Look for only one declaration of the const struct. 4; CHECK: g0: 5; CHECK-NOT: g02: 6 7target triple = "hexagon" 8 9%s.8 = type { %s.9, ptr, ptr } 10%s.9 = type { i16, i16, i32 } 11%s.0 = type { i32, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, [32 x %s.4], i32, i16, i16, i16, i16, [16 x %s.7], i16 } 12%s.1 = type { i16, i8, i8, i32, %s.2 } 13%s.2 = type { %s.3, ptr } 14%s.3 = type { ptr } 15%s.4 = type { ptr, ptr, i16, i32 } 16%s.5 = type { %s.6, ptr } 17%s.6 = type { i16, i8, i8, i32 } 18%s.7 = type { ptr, i32 } 19%s.11 = type { i32, ptr } 20%s.12 = type opaque 21 22@g0 = internal constant %s.8 { %s.9 { i16 531, i16 0, i32 16 }, ptr @g1, ptr @g2 }, align 4 23@g1 = private unnamed_addr constant [48 x i8] c"In task 0x%x, Assertion heap_ptr != NULL failed\00", align 8 24@g2 = private unnamed_addr constant [10 x i8] c"xxxxxxx.c\00", align 8 25 26; Function Attrs: nounwind 27define void @f0(ptr %a0) #0 { 28b0: 29 %v0 = icmp eq ptr %a0, null 30 br i1 %v0, label %b1, label %b4 31 32b1: ; preds = %b0 33 %v1 = tail call ptr @f1() #0 34 %v2 = icmp eq ptr %v1, null 35 br i1 %v2, label %b3, label %b2 36 37b2: ; preds = %b1 38 %v3 = ptrtoint ptr %v1 to i32 39 tail call void @f2(ptr @g0, i32 %v3, i32 0, i32 0) #0 40 br label %b5 41 42b3: ; preds = %b1 43 tail call void @f3(ptr @g0) #0 44 br label %b5 45 46b4: ; preds = %b0 47 %v4 = getelementptr inbounds %s.0, ptr %a0, i32 0, i32 9 48 store ptr @f4, ptr %v4, align 4, !tbaa !0 49 %v5 = getelementptr inbounds %s.0, ptr %a0, i32 0, i32 10 50 store ptr @f5, ptr %v5, align 4, !tbaa !0 51 br label %b5 52 53b5: ; preds = %b4, %b3, %b2 54 ret void 55} 56 57declare ptr @f1() 58 59declare void @f2(ptr, i32, i32, i32) 60 61declare void @f3(ptr) 62 63declare void @f4(ptr) 64 65declare void @f5(ptr) 66 67attributes #0 = { nounwind } 68 69!0 = !{!1, !1, i64 0} 70!1 = !{!"any pointer", !2} 71!2 = !{!"omnipotent char", !3} 72!3 = !{!"Simple C/C++ TBAA"} 73