; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=i686-- -mcpu=i386 | FileCheck %s

	%struct.CONSTRAINT = type { i32, i32, i32, i32 }
	%struct.FIRST_UNION = type { %struct.anon }
	%struct.FOURTH_UNION = type { %struct.CONSTRAINT }
	%struct.LIST = type { ptr, ptr }
	%struct.SECOND_UNION = type { { i16, i8, i8 } }
	%struct.THIRD_UNION = type { { [2 x i32], [2 x i32] } }
	%struct.anon = type { i8, i8, i32 }
	%struct.head_type = type { [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, %struct.THIRD_UNION, %struct.FOURTH_UNION, ptr, { ptr }, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32 }
	%struct.rec = type { %struct.head_type }
	%struct.symbol_type = type <{ [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i16, i8, i8, i8, i8 }>
	%struct.word_type = type { [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, %struct.THIRD_UNION, [4 x i8] }

define void @InsertSym_bb1163(ptr %s) {
; CHECK-LABEL: InsertSym_bb1163:
; CHECK:       # %bb.0: # %newFuncRoot
; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %eax
; CHECK-NEXT:    movl (%eax), %ecx
; CHECK-NEXT:    movl 28(%ecx), %ecx
; CHECK-NEXT:    orb $-128, 26(%ecx)
; CHECK-NEXT:    orb $2, 25(%ecx)
; CHECK-NEXT:    movl (%eax), %eax
; CHECK-NEXT:    orb $1, 25(%eax)
; CHECK-NEXT:    retl
newFuncRoot:
	br label %bb1163
bb1233.exitStub:		; preds = %bb1163
	ret void
bb1163:		; preds = %newFuncRoot
	%tmp1164 = load ptr, ptr %s, align 4		; <ptr> [#uses=1]
	%tmp1165 = getelementptr %struct.rec, ptr %tmp1164, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1167 = getelementptr %struct.symbol_type, ptr %tmp1165, i32 0, i32 3		; <ptr> [#uses=1]
	%tmp1168 = load ptr, ptr %tmp1167, align 1		; <ptr> [#uses=2]
	%tmp1169 = load ptr, ptr %s, align 4		; <ptr> [#uses=1]
	%tmp1170 = getelementptr %struct.rec, ptr %tmp1169, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1172 = getelementptr %struct.symbol_type, ptr %tmp1170, i32 0, i32 3		; <ptr> [#uses=1]
	%tmp1173 = load ptr, ptr %tmp1172, align 1		; <ptr> [#uses=2]
	%tmp1174 = getelementptr %struct.rec, ptr %tmp1173, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1176 = getelementptr %struct.word_type, ptr %tmp1174, i32 0, i32 2		; <ptr> [#uses=1]
	%tmp1177 = getelementptr %struct.SECOND_UNION, ptr %tmp1176, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1179 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1177, i32 0, i32 2		; <ptr> [#uses=2]
	%mask1180 = and i8 1, 1		; <i8> [#uses=2]
	%tmp1181 = load i8, ptr %tmp1179, align 1		; <i8> [#uses=1]
	%tmp1182 = shl i8 %mask1180, 7		; <i8> [#uses=1]
	%tmp1183 = and i8 %tmp1181, 127		; <i8> [#uses=1]
	%tmp1184 = or i8 %tmp1183, %tmp1182		; <i8> [#uses=1]
	store i8 %tmp1184, ptr %tmp1179, align 1
	%mask1185 = and i8 %mask1180, 1		; <i8> [#uses=0]
	%tmp1186 = getelementptr %struct.rec, ptr %tmp1173, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1188 = getelementptr %struct.word_type, ptr %tmp1186, i32 0, i32 2		; <ptr> [#uses=1]
	%tmp1189 = getelementptr %struct.SECOND_UNION, ptr %tmp1188, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1191 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1189, i32 0, i32 2		; <ptr> [#uses=1]
	%tmp1192 = load i8, ptr %tmp1191, align 1		; <i8> [#uses=1]
	%tmp1193 = lshr i8 %tmp1192, 7		; <i8> [#uses=1]
	%mask1194 = and i8 %tmp1193, 1		; <i8> [#uses=2]
	%mask1195 = and i8 %mask1194, 1		; <i8> [#uses=0]
	%tmp1196 = getelementptr %struct.rec, ptr %tmp1168, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1198 = getelementptr %struct.word_type, ptr %tmp1196, i32 0, i32 2		; <ptr> [#uses=1]
	%tmp1199 = getelementptr %struct.SECOND_UNION, ptr %tmp1198, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1201 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1199, i32 0, i32 1		; <ptr> [#uses=2]
	%mask1202 = and i8 %mask1194, 1		; <i8> [#uses=2]
	%tmp1203 = load i8, ptr %tmp1201, align 1		; <i8> [#uses=1]
	%tmp1204 = shl i8 %mask1202, 1		; <i8> [#uses=1]
	%tmp1205 = and i8 %tmp1204, 2		; <i8> [#uses=1]
	%tmp1206 = and i8 %tmp1203, -3		; <i8> [#uses=1]
	%tmp1207 = or i8 %tmp1206, %tmp1205		; <i8> [#uses=1]
	store i8 %tmp1207, ptr %tmp1201, align 1
	%mask1208 = and i8 %mask1202, 1		; <i8> [#uses=0]
	%tmp1209 = getelementptr %struct.rec, ptr %tmp1168, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1211 = getelementptr %struct.word_type, ptr %tmp1209, i32 0, i32 2		; <ptr> [#uses=1]
	%tmp1212 = getelementptr %struct.SECOND_UNION, ptr %tmp1211, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1214 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1212, i32 0, i32 1		; <ptr> [#uses=1]
	%tmp1215 = load i8, ptr %tmp1214, align 1		; <i8> [#uses=1]
	%tmp1216 = shl i8 %tmp1215, 6		; <i8> [#uses=1]
	%tmp1217 = lshr i8 %tmp1216, 7		; <i8> [#uses=1]
	%mask1218 = and i8 %tmp1217, 1		; <i8> [#uses=2]
	%mask1219 = and i8 %mask1218, 1		; <i8> [#uses=0]
	%tmp1220 = load ptr, ptr %s, align 4		; <ptr> [#uses=1]
	%tmp1221 = getelementptr %struct.rec, ptr %tmp1220, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1223 = getelementptr %struct.word_type, ptr %tmp1221, i32 0, i32 2		; <ptr> [#uses=1]
	%tmp1224 = getelementptr %struct.SECOND_UNION, ptr %tmp1223, i32 0, i32 0		; <ptr> [#uses=1]
	%tmp1226 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1224, i32 0, i32 1		; <ptr> [#uses=2]
	%mask1227 = and i8 %mask1218, 1		; <i8> [#uses=2]
	%tmp1228 = load i8, ptr %tmp1226, align 1		; <i8> [#uses=1]
	%tmp1229 = and i8 %mask1227, 1		; <i8> [#uses=1]
	%tmp1230 = and i8 %tmp1228, -2		; <i8> [#uses=1]
	%tmp1231 = or i8 %tmp1230, %tmp1229		; <i8> [#uses=1]
	store i8 %tmp1231, ptr %tmp1226, align 1
	%mask1232 = and i8 %mask1227, 1		; <i8> [#uses=0]
	br label %bb1233.exitStub
}
