llvm.org GIT mirror llvm / a53616d
Remove support for parsing the "type i32" syntax for defining a numbered top level type without a specified number. This syntax isn't documented and blocks forward progress. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133371 91177308-0d34-0410-b5e6-96231b3b80d8 Chris Lattner 8 years ago
30 changed file(s) with 90 addition(s) and 335 deletion(s). Raw diff Collapse all Expand all
169169 case lltok::kw_module: if (ParseModuleAsm()) return true; break;
170170 case lltok::kw_target: if (ParseTargetDefinition()) return true; break;
171171 case lltok::kw_deplibs: if (ParseDepLibs()) return true; break;
172 case lltok::kw_type: if (ParseUnnamedType()) return true; break;
173172 case lltok::LocalVarID: if (ParseUnnamedType()) return true; break;
174173 case lltok::LocalVar: if (ParseNamedType()) return true; break;
175174 case lltok::GlobalID: if (ParseUnnamedGlobal()) return true; break;
290289 }
291290
292291 /// ParseUnnamedType:
293 /// ::= 'type' type
294292 /// ::= LocalVarID '=' 'type' type
295293 bool LLParser::ParseUnnamedType() {
294 LocTy TypeLoc = Lex.getLoc();
296295 unsigned TypeID = NumberedTypes.size();
297
298 // Handle the LocalVarID form.
299 if (Lex.getKind() == lltok::LocalVarID) {
300 if (Lex.getUIntVal() != TypeID)
301 return Error(Lex.getLoc(), "type expected to be numbered '%" +
302 Twine(TypeID) + "'");
303 Lex.Lex(); // eat LocalVarID;
304
305 if (ParseToken(lltok::equal, "expected '=' after name"))
306 return true;
307 }
308
309 LocTy TypeLoc = Lex.getLoc();
310 if (ParseToken(lltok::kw_type, "expected 'type' after '='")) return true;
296 if (Lex.getUIntVal() != TypeID)
297 return Error(Lex.getLoc(), "type expected to be numbered '%" +
298 Twine(TypeID) + "'");
299 Lex.Lex(); // eat LocalVarID;
300
301 if (ParseToken(lltok::equal, "expected '=' after name") ||
302 ParseToken(lltok::kw_type, "expected 'type' after '='"))
303 return true;
311304
312305 PATypeHolder Ty(Type::getVoidTy(Context));
313306 if (ParseType(Ty)) return true;
66 module asm ".ident\09\22$FreeBSD: head/sys/kern/vfs_subr.c 195285 2009-07-02 14:19:33Z jamie $\22"
77 module asm ".section set_pcpu, \22aw\22, @progbits"
88 module asm ".previous"
9 type <{ [40 x i8] }> ; type %0
10 type <{ %struct.vm_object*, %struct.vm_object** }> ; type %1
11 type <{ %struct.vm_object* }> ; type %2
12 type <{ %struct.vm_page*, %struct.vm_page** }> ; type %3
13 type <{ %struct.pv_entry*, %struct.pv_entry** }> ; type %4
14 type <{ %struct.vm_reserv* }> ; type %5
15 type <{ %struct.bufobj*, %struct.bufobj** }> ; type %6
16 type <{ %struct.proc*, %struct.proc** }> ; type %7
17 type <{ %struct.thread*, %struct.thread** }> ; type %8
18 type <{ %struct.prison*, %struct.prison** }> ; type %9
19 type <{ %struct.prison* }> ; type %10
20 type <{ %struct.task* }> ; type %11
21 type <{ %struct.osd*, %struct.osd** }> ; type %12
22 type <{ %struct.proc* }> ; type %13
23 type <{ %struct.ksiginfo*, %struct.ksiginfo** }> ; type %14
24 type <{ %struct.pv_chunk*, %struct.pv_chunk** }> ; type %15
25 type <{ %struct.pgrp*, %struct.pgrp** }> ; type %16
26 type <{ %struct.knote*, %struct.knote** }> ; type %17
27 type <{ %struct.ktr_request*, %struct.ktr_request** }> ; type %18
28 type <{ %struct.mqueue_notifier* }> ; type %19
29 type <{ %struct.turnstile* }> ; type %20
30 type <{ %struct.namecache* }> ; type %21
31 type <{ %struct.namecache*, %struct.namecache** }> ; type %22
32 type <{ %struct.lockf*, %struct.lockf** }> ; type %23
33 type <{ %struct.lockf_entry*, %struct.lockf_entry** }> ; type %24
34 type <{ %struct.lockf_edge*, %struct.lockf_edge** }> ; type %25
9 %0 = type <{ [40 x i8] }> ; type %0
10 %1 = type <{ %struct.vm_object*, %struct.vm_object** }> ; type %1
11 %2 = type <{ %struct.vm_object* }> ; type %2
12 %3 = type <{ %struct.vm_page*, %struct.vm_page** }> ; type %3
13 %4 = type <{ %struct.pv_entry*, %struct.pv_entry** }> ; type %4
14 %5 = type <{ %struct.vm_reserv* }> ; type %5
15 %6 = type <{ %struct.bufobj*, %struct.bufobj** }> ; type %6
16 %7 = type <{ %struct.proc*, %struct.proc** }> ; type %7
17 %8 = type <{ %struct.thread*, %struct.thread** }> ; type %8
18 %9 = type <{ %struct.prison*, %struct.prison** }> ; type %9
19 %10 = type <{ %struct.prison* }> ; type %10
20 %11 = type <{ %struct.task* }> ; type %11
21 %12 = type <{ %struct.osd*, %struct.osd** }> ; type %12
22 %13 = type <{ %struct.proc* }> ; type %13
23 %14 = type <{ %struct.ksiginfo*, %struct.ksiginfo** }> ; type %14
24 %15 = type <{ %struct.pv_chunk*, %struct.pv_chunk** }> ; type %15
25 %16 = type <{ %struct.pgrp*, %struct.pgrp** }> ; type %16
26 %17 = type <{ %struct.knote*, %struct.knote** }> ; type %17
27 %18 = type <{ %struct.ktr_request*, %struct.ktr_request** }> ; type %18
28 %19 = type <{ %struct.mqueue_notifier* }> ; type %19
29 %20 = type <{ %struct.turnstile* }> ; type %20
30 %21 = type <{ %struct.namecache* }> ; type %21
31 %22 = type <{ %struct.namecache*, %struct.namecache** }> ; type %22
32 %23 = type <{ %struct.lockf*, %struct.lockf** }> ; type %23
33 %24 = type <{ %struct.lockf_entry*, %struct.lockf_entry** }> ; type %24
34 %25 = type <{ %struct.lockf_edge*, %struct.lockf_edge** }> ; type %25
3535 %struct.__siginfo = type <{ i32, i32, i32, i32, i32, i32, i8*, %union.sigval, %0 }>
3636 %struct.__sigset = type <{ [4 x i32] }>
3737 %struct.acl = type <{ i32, i32, [4 x i32], [254 x %struct.acl_entry] }>
11 ; PR 3909
22
33
4 type { i32, %1* } ; type %0
5 type { i32, i8* } ; type %1
4 %0 = type { i32, %1* } ; type %0
5 %1 = type { i32, i8* } ; type %1
66
77 define x86_stdcallcc i32 @_Dmain(%0 %unnamed) {
88 entry:
+0
-6
test/Assembler/2002-04-04-PureVirtMethCall.ll less more
None ; RUN: llvm-as %s -o /dev/null
1
2 type { { \2 *, \4 ** },
3 { \2 *, \4 ** }
4 }
5
+0
-5
test/Assembler/2002-04-04-PureVirtMethCall2.ll less more
None ; RUN: llvm-as %s -o /dev/null
1
2 %t = type { { \2*, \2 },
3 { \2*, \2 }
4 }
0 ; RUN: llvm-as < %s | llvm-dis
11
2 type i32
32
43 define void @foo() {
5 bitcast %0* null to i32*
4 bitcast i32* null to i32*
65 ret void
76 }
0 ; RUN: llvm-as < %s | llvm-dis -o /dev/null
1 type { %object.ModuleInfo.__vtbl*, i8*, %"byte[]", %1, %"ClassInfo[]", i32, void ()*, void ()*, void ()*, i8*, void ()* } ; type %0
2 type { i64, %object.ModuleInfo* } ; type %1
3 type { i32, void ()* } ; type %2
1 %0 = type { %object.ModuleInfo.__vtbl*, i8*, %"byte[]", %1, %"ClassInfo[]", i32, void ()*, void ()*, void ()*, i8*, void ()* } ; type %0
2 %1 = type { i64, %object.ModuleInfo* } ; type %1
3 %2 = type { i32, void ()* } ; type %2
44 %"ClassInfo[]" = type { i64, %object.ClassInfo** }
55 %"Interface[]" = type { i64, %object.Interface* }
66 %"ModuleInfo[]" = type { i64, %object.ModuleInfo** }
0 ; RUN: llc < %s -march=bfin -verify-machineinstrs > %t
11
2 type { i24, i1 } ; type %0
2 %0 = type { i24, i1 } ; type %0
33
44 define i1 @func2(i24 zeroext %v1, i24 zeroext %v2) nounwind {
55 entry:
0 ; RUN: llc < %s -march=bfin -verify-machineinstrs
11
2 type { i32, float, float, float, float, float, float, float, float, float, float } ; type %0
2 %0 = type { i32, float, float, float, float, float, float, float, float, float, float } ; type %0
33 %struct..s_segment_inf = type { float, i32, i16, i16, float, float, i32, float, float }
44
55 define i32 @main(i32 %argc.1, i8** %argv.1) {
0 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin9 -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim
11
2 type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16)*, i32 } ; type %0
3 type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*)*, i32 } ; type %1
4 type { void (%"struct.xalanc_1_8::FormatterToXML"*, %"struct.xalanc_1_8::XalanDOMString"*)*, i32 } ; type %2
5 type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*, i32, i32)*, i32 } ; type %3
6 type { void (%"struct.xalanc_1_8::FormatterToXML"*)*, i32 } ; type %4
2 %0 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16)*, i32 } ; type %0
3 %1 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*)*, i32 } ; type %1
4 %2 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, %"struct.xalanc_1_8::XalanDOMString"*)*, i32 } ; type %2
5 %3 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*, i32, i32)*, i32 } ; type %3
6 %4 = type { void (%"struct.xalanc_1_8::FormatterToXML"*)*, i32 } ; type %4
77 %"struct.std::CharVectorType" = type { %"struct.std::_Vector_base >" }
88 %"struct.std::_Bit_const_iterator" = type { %"struct.std::_Bit_iterator_base" }
99 %"struct.std::_Bit_iterator_base" = type { i32*, i32 }
0 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim
11
2 type { %struct.GAP } ; type %0
3 type { i16, i8, i8 } ; type %1
4 type { [2 x i32], [2 x i32] } ; type %2
5 type { %struct.rec* } ; type %3
6 type { i8, i8, i16, i8, i8, i8, i8 } ; type %4
2 %0 = type { %struct.GAP } ; type %0
3 %1 = type { i16, i8, i8 } ; type %1
4 %2 = type { [2 x i32], [2 x i32] } ; type %2
5 %3 = type { %struct.rec* } ; type %3
6 %4 = type { i8, i8, i16, i8, i8, i8, i8 } ; type %4
77 %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
88 %struct.FILE_POS = type { i8, i8, i16, i32 }
99 %struct.FIRST_UNION = type { %struct.FILE_POS }
0 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim -O3
11
2 type { i16, i8, i8 } ; type %0
3 type { [2 x i32], [2 x i32] } ; type %1
4 type { %struct.GAP } ; type %2
5 type { %struct.rec* } ; type %3
6 type { i8, i8, i16, i8, i8, i8, i8 } ; type %4
7 type { i8, i8, i8, i8 } ; type %5
2 %0 = type { i16, i8, i8 } ; type %0
3 %1 = type { [2 x i32], [2 x i32] } ; type %1
4 %2 = type { %struct.GAP } ; type %2
5 %3 = type { %struct.rec* } ; type %3
6 %4 = type { i8, i8, i16, i8, i8, i8, i8 } ; type %4
7 %5 = type { i8, i8, i8, i8 } ; type %5
88 %struct.COMPOSITE = type { i8, i16, i16 }
99 %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
1010 %struct.FILE_POS = type { i8, i8, i16, i32 }
+0
-165
test/CodeGen/X86/2009-04-09-InlineAsmCrash.ll less more
None ; RUN: llc < %s
1 ; rdar://6774324
2 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
3 target triple = "i386-apple-darwin10.0"
4 type <{ i32, %1 }> ; type %0
5 type <{ [216 x i8] }> ; type %1
6 type <{ %3, %4*, %28*, i64, i32, %6, %6, i32, i32, i32, i32, void (i8*, i32)*, i8*, %29*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i8*], i32, %30, i32, %24, %4*, %4*, i64, i64, i32, i32, void (i32, %2*)*, i32, i32, i32, i32, i32, i32, i32, i32, %24, i64, i64, i64, i64, i64, %21, i32, i32, %21, i32, %31*, %3, %33, %34, %9*, i32, i32, %3, %3, %35, %41*, %42*, %11, i32, i32, i32, i8, i8, i8, i8, %69*, %69, %9*, %9*, [11 x %61], %3, i8*, i32, i64, i64, i32, i32, i32, i64 }> ; type %2
7 type <{ %3*, %3* }> ; type %3
8 type <{ %3, i32, %2*, %2*, %2*, %5*, i32, i32, %21, i64, i64, i64, i32, %22, %9*, %6, %4*, %23 }> ; type %4
9 type <{ %3, %3, %4*, %4*, i32, %6, %9*, %9*, %5*, %20* }> ; type %5
10 type <{ %7, i16, i8, i8, %8 }> ; type %6
11 type <{ i32 }> ; type %7
12 type <{ i8*, i8*, [2 x i32], i16, i8, i8, i8*, i8, i8, i8, i8, i8* }> ; type %8
13 type <{ %10, %13, %15, i32, i32, i32, i32, %9*, %9*, %16*, i32, %17*, i64, i32 }> ; type %9
14 type <{ i32, i32, %11 }> ; type %10
15 type <{ %12 }> ; type %11
16 type <{ [12 x i8] }> ; type %12
17 type <{ %14 }> ; type %13
18 type <{ [40 x i8] }> ; type %14
19 type <{ [4 x i8] }> ; type %15
20 type <{ %15, %15 }> ; type %16
21 type <{ %17*, %17*, %9*, i32, %18*, %19* }> ; type %17
22 type opaque ; type %18
23 type <{ i32, i32, %9*, %9*, i32, i32 }> ; type %19
24 type <{ %5*, %20*, %20*, %20* }> ; type %20
25 type <{ %3, %3*, void (i8*, i8*)*, i8*, i8*, i64 }> ; type %21
26 type <{ i32, [4 x i32], i32, i32, [128 x %3] }> ; type %22
27 type <{ %24, %24, %24, %24*, %24*, %24*, %25, %26, %27, i32, i32, i8* }> ; type %23
28 type <{ i64, i32, i32, i32 }> ; type %24
29 type <{ i32, i32 }> ; type %25
30 type <{ i32, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i32 }> ; type %26
31 type <{ [16 x %17*], i32 }> ; type %27
32 type <{ i8, i8, i8, i8, %7, %3 }> ; type %28
33 type <{ i32, %11*, i8*, i8*, %11* }> ; type %29
34 type <{ i32, i32, i32, i32, i64 }> ; type %30
35 type <{ %32*, %3, %3, i32, i32, i32, %5* }> ; type %31
36 type opaque ; type %32
37 type <{ [44 x i8] }> ; type %33
38 type <{ %17* }> ; type %34
39 type <{ %36, %36*, i32, [4 x %40], i32, i32, i64, i32 }> ; type %35
40 type <{ i8*, %0*, %37*, i64, %39, i32, %39, %6, i64, i64, i8*, i32 }> ; type %36
41 type <{ i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, %38 }> ; type %37
42 type <{ i16, i16, i8, i8, i16, i32, i16, i16, i32, i16, i16, i32, i32, [8 x [8 x i16]], [8 x [16 x i16]], [96 x i8] }> ; type %38
43 type <{ i8, i8, i8, i8, i8, i8, i8, i8 }> ; type %39
44 type <{ i64 }> ; type %40
45 type <{ %11, i32, i32, i32, %42*, %3, i8*, %3, %5*, %32*, i32, i32, i32, i32, i32, i32, i32, %59, %60, i64, i64, i32, %11, %9*, %9*, %9*, [11 x %61], %9*, %9*, %9*, %9*, %9*, [3 x %9*], %62*, %3, %3, i32, i32, %9*, %9*, i32, %67*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, %68*, [2 x i32], i64, i64, i32 }> ; type %41
46 type <{ %43, %44, %47*, i64, i64, i64, i32, %11, %54, %46*, %46*, i32, i32, i32, i32, i32, i32, i32 }> ; type %42
47 type <{ i16, i8, i8, i32, i32 }> ; type %43
48 type <{ %45, i32, i32 }> ; type %44
49 type <{ %46*, %46*, i64, i64 }> ; type %45
50 type <{ %45, %15, i64, i8, i8, i8, i8, i16, i16 }> ; type %46
51 type <{ i64*, i64, %48*, i32, i32, i32, %6, %53, i32, i64, i64*, i64*, %48*, %48*, %48*, i32 }> ; type %47
52 type <{ %3, %43, i64, %49*, i32, i32, i32, i32, %48*, %48*, i64, %50*, i64, %52*, i32, i16, i16, i8, i8, i8, i8, %3, %3, i64, i32, i32, i32, i8*, i32, i8, i8, i8, i8, %3 }> ; type %48
53 type <{ %3, %3, %49*, %48*, i64, i8, i8, i8, i8, i32, i8, i8, i8, i8 }> ; type %49
54 type <{ i32, %51* }> ; type %50
55 type <{ void (%50*)*, void (%50*)*, i32 (%50*, %52*, i32)*, i32 (%50*)*, i32 (%50*, i64, i32, i32, i32*)*, i32 (%50*, i64, i32, i64*, i32*, i32, i32, i32)*, i32 (%50*, i64, i32)*, i32 (%50*, i64, i64, i32)*, i32 (%50*, i64, i64, i32)*, i32 (%50*, i32)*, i32 (%50*)*, i8* }> ; type %51
56 type <{ i32, %48* }> ; type %52
57 type <{ i32, i32, i32 }> ; type %53
58 type <{ %11, %55*, i32, %53, i64 }> ; type %54
59 type <{ %3, i32, i32, i32, i32, i32, [64 x i8], %56 }> ; type %55
60 type <{ %57, %58, %58 }> ; type %56
61 type <{ i64, i64, i64, i64, i64 }> ; type %57
62 type <{ i64, i64, i64, i64, i64, i64, i64, i64 }> ; type %58
63 type <{ [2 x i32] }> ; type %59
64 type <{ [8 x i32] }> ; type %60
65 type <{ %9*, i32, i32, i32 }> ; type %61
66 type <{ %11, i32, %11, i32, i32, %63*, i32, %64*, %65, i32, i32, i32, i32, %41* }> ; type %62
67 type <{ %10*, i32, %15, %15 }> ; type %63
68 type opaque ; type %64
69 type <{ i32, %66*, %66*, %66**, %66*, %66** }> ; type %65
70 type <{ %63, i32, %62*, %66*, %66* }> ; type %66
71 type <{ i32, i32, [0 x %39] }> ; type %67
72 type opaque ; type %68
73 type <{ %69*, void (%69*, %2*)* }> ; type %69
74 type <{ %70*, %2*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i32, %71, i32, i32, i64, i64, i64, %72, i8*, i8*, %73, %4*, %79*, %81*, %39*, %84, i32, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i32, i64*, i32, i64*, i8*, i32, [256 x i32], i64, i64, %86, %77*, i64, i64, %88*, %2*, %2* }> ; type %70
75 type <{ %3, i64, i32, i32 }> ; type %71
76 type <{ i64, i64, i64 }> ; type %72
77 type <{ %73*, %73*, %73*, %73*, %74*, %75*, %76*, %70*, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, [3 x %78*], i8*, i8* }> ; type %73
78 type <{ %74*, %74*, %75*, %76*, %73*, i32, i32, i32, i32, i32, i8*, i8* }> ; type %74
79 type <{ %75*, %73*, %74*, %76*, i32, i32, i32, i32, %78*, i8*, i8* }> ; type %75
80 type <{ %76*, %73*, %74*, %75*, i32, i32, i32, i32, i8*, i8*, %77* }> ; type %76
81 type opaque ; type %77
82 type <{ %78*, %75*, i8, i8, i8, i8, i16, i16, i16, i8, i8, i32, [0 x %73*] }> ; type %78
83 type <{ i32, i32, i32, [20 x %80] }> ; type %79
84 type <{ i64*, i8* }> ; type %80
85 type <{ [256 x %39], [19 x %39], i8, i8, i8, i8, i8, i8, i8, i8, %82, i8, i8, i8, i8, i8, i8, i8, i8, %82, %83 }> ; type %81
86 type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16 }> ; type %82
87 type <{ [16 x i64], i64 }> ; type %83
88 type <{ %82*, %85, %85, %39*, i32 }> ; type %84
89 type <{ i16, %39* }> ; type %85
90 type <{ %87, i8* }> ; type %86
91 type <{ i32, i32, i32, i8, i8, i16, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }> ; type %87
92 type <{ i64, i64, i32, i32, i32, i32 }> ; type %88
93 type <{ i32, i32, i32, i32, i32, i32, i32 }> ; type %89
94 @kernel_stack_size = external global i32 ; [#uses=1]
95
96 define void @test(%0*) nounwind {
97 %2 = tail call %2* asm sideeffect "mov %gs:${1:P},$0", "=r,i,~{dirflag},~{fpsr},~{flags}"(i32 ptrtoint (%2** getelementptr (%70* null, i32 0, i32 1) to i32)) nounwind ; <%2*> [#uses=1]
98 %3 = getelementptr %2* %2, i32 0, i32 15 ; [#uses=1]
99 %4 = load i32* %3 ; [#uses=2]
100 %5 = icmp eq i32 %4, 0 ; [#uses=1]
101 br i1 %5, label %47, label %6
102
103 ;
104 %7 = load i32* @kernel_stack_size ; [#uses=1]
105 %8 = add i32 %7, %4 ; [#uses=1]
106 %9 = inttoptr i32 %8 to %89* ; <%89*> [#uses=12]
107 %10 = tail call %2* asm sideeffect "mov %gs:${1:P},$0", "=r,i,~{dirflag},~{fpsr},~{flags}"(i32 ptrtoint (%2** getelementptr (%70* null, i32 0, i32 1) to i32)) nounwind ; <%2*> [#uses=1]
108 %11 = getelementptr %2* %10, i32 0, i32 65, i32 1 ; <%36**> [#uses=1]
109 %12 = load %36** %11 ; <%36*> [#uses=1]
110 %13 = getelementptr %36* %12, i32 0, i32 1 ; <%0**> [#uses=1]
111 %14 = load %0** %13 ; <%0*> [#uses=1]
112 %15 = icmp eq %0* %14, %0 ; [#uses=1]
113 br i1 %15, label %40, label %16
114
115 ;
116 %17 = getelementptr %0* %0, i32 0, i32 1 ; <%1*> [#uses=1]
117 %18 = getelementptr %89* %9, i32 -1, i32 0 ; [#uses=1]
118 %19 = getelementptr %0* %0, i32 0, i32 1, i32 0, i32 32 ; [#uses=1]
119 %20 = bitcast i8* %19 to i32* ; [#uses=1]
120 %21 = load i32* %20 ; [#uses=1]
121 store i32 %21, i32* %18
122 %22 = getelementptr %89* %9, i32 -1, i32 1 ; [#uses=1]
123 %23 = ptrtoint %1* %17 to i32 ; [#uses=1]
124 store i32 %23, i32* %22
125 %24 = getelementptr %89* %9, i32 -1, i32 2 ; [#uses=1]
126 %25 = getelementptr %0* %0, i32 0, i32 1, i32 0, i32 24 ; [#uses=1]
127 %26 = bitcast i8* %25 to i32* ; [#uses=1]
128 %27 = load i32* %26 ; [#uses=1]
129 store i32 %27, i32* %24
130 %28 = getelementptr %89* %9, i32 -1, i32 3 ; [#uses=1]
131 %29 = getelementptr %0* %0, i32 0, i32 1, i32 0, i32 16 ; [#uses=1]
132 %30 = bitcast i8* %29 to i32* ; [#uses=1]
133 %31 = load i32* %30 ; [#uses=1]
134 store i32 %31, i32* %28
135 %32 = getelementptr %89* %9, i32 -1, i32 4 ; [#uses=1]
136 %33 = getelementptr %0* %0, i32 0, i32 1, i32 0, i32 20 ; [#uses=1]
137 %34 = bitcast i8* %33 to i32* ; [#uses=1]
138 %35 = load i32* %34 ; [#uses=1]
139 store i32 %35, i32* %32
140 %36 = getelementptr %89* %9, i32 -1, i32 5 ; [#uses=1]
141 %37 = getelementptr %0* %0, i32 0, i32 1, i32 0, i32 56 ; [#uses=1]
142 %38 = bitcast i8* %37 to i32* ; [#uses=1]
143 %39 = load i32* %38 ; [#uses=1]
144 store i32 %39, i32* %36
145 ret void
146
147 ;
148 %41 = getelementptr %89* %9, i32 -1, i32 0 ; [#uses=1]
149 tail call void asm sideeffect "movl %ebx, $0", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %41) nounwind
150 %42 = getelementptr %89* %9, i32 -1, i32 1 ; [#uses=1]
151 tail call void asm sideeffect "movl %esp, $0", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %42) nounwind
152 %43 = getelementptr %89* %9, i32 -1, i32 2 ; [#uses=1]
153 tail call void asm sideeffect "movl %ebp, $0", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %43) nounwind
154 %44 = getelementptr %89* %9, i32 -1, i32 3 ; [#uses=1]
155 tail call void asm sideeffect "movl %edi, $0", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %44) nounwind
156 %45 = getelementptr %89* %9, i32 -1, i32 4 ; [#uses=1]
157 tail call void asm sideeffect "movl %esi, $0", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %45) nounwind
158 %46 = getelementptr %89* %9, i32 -1, i32 5 ; [#uses=1]
159 tail call void asm sideeffect "movl $$1f, $0\0A1:", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %46) nounwind
160 ret void
161
162 ;
163 ret void
164 }
11 ; radr://6772169
22 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
33 target triple = "x86_64-apple-darwin10"
4 type { i32, i1 } ; type %0
4 %0 = type { i32, i1 } ; type %0
55
66 declare %0 @llvm.sadd.with.overflow.i32(i32, i32) nounwind
77
11 ; rdar://6781755
22 ; PR3934
33
4 type { i32, i32 } ; type %0
4 %0 = type { i32, i32 } ; type %0
55
66 define void @bn_sqr_comba8(i32* nocapture %r, i32* %a) nounwind {
77 entry:
0 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -disable-fp-elim -relocation-model=pic
11 ; PR4099
22
3 type { [62 x %struct.Bitvec*] } ; type %0
4 type { i8* } ; type %1
5 type { double } ; type %2
3 %0 = type { [62 x %struct.Bitvec*] } ; type %0
4 %1 = type { i8* } ; type %1
5 %2 = type { double } ; type %2
66 %struct..5sPragmaType = type { i8*, i32 }
77 %struct.AggInfo = type { i8, i8, i32, %struct.ExprList*, i32, %struct.AggInfo_col*, i32, i32, i32, %struct.AggInfo_func*, i32, i32 }
88 %struct.AggInfo_col = type { %struct.Table*, i32, i32, i32, i32, %struct.Expr* }
0 ; RUN: llc < %s -march=x86
11
2 type { %struct.GAP } ; type %0
3 type { i16, i8, i8 } ; type %1
4 type { [2 x i32], [2 x i32] } ; type %2
5 type { %struct.rec* } ; type %3
2 %0 = type { %struct.GAP } ; type %0
3 %1 = type { i16, i8, i8 } ; type %1
4 %2 = type { [2 x i32], [2 x i32] } ; type %2
5 %3 = type { %struct.rec* } ; type %3
66 %struct.FILE_POS = type { i8, i8, i16, i32 }
77 %struct.FIRST_UNION = type { %struct.FILE_POS }
88 %struct.FOURTH_UNION = type { %struct.STYLE }
11 target triple = "x86_64-mingw"
22
33 ; ModuleID = 'mm.bc'
4 type opaque ; type %0
5 type opaque ; type %1
4 %0 = type opaque ; type %0
5 %1 = type opaque ; type %1
66
77 define internal fastcc float @computeMipmappingRho(%0* %shaderExecutionStatePtr, i32 %index, <4 x float> %texCoord, <4 x float> %texCoordDX, <4 x float> %texCoordDY) readonly {
88 indexCheckBlock:
33 ; Registers other than RAX, RCX are OK, but they must be different.
44 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
55 target triple = "x86_64-apple-darwin10.0"
6 type { i64, i64 } ; type %0
6 %0 = type { i64, i64 } ; type %0
77
88 define i64 @flsst(i64 %find) nounwind ssp {
99 entry:
44 ; CHECK: os_clock
55 ; CHECK-NOT: movaps
66
7 type { %struct.TValue } ; type %0
8 type { %struct.L_Umaxalign, i32, %struct.Node* } ; type %1
7 %0 = type { %struct.TValue } ; type %0
8 %1 = type { %struct.L_Umaxalign, i32, %struct.Node* } ; type %1
99 %struct.CallInfo = type { %struct.TValue*, %struct.TValue*, %struct.TValue*, i32*, i32, i32 }
1010 %struct.GCObject = type { %struct.lua_State }
1111 %struct.L_Umaxalign = type { double }
22 ; This file is for regression tests for cases where FastISel needs
33 ; to gracefully bail out and let SelectionDAGISel take over.
44
5 type { i64, i8* } ; type %0
5 %0 = type { i64, i8* } ; type %0
66
77 declare void @bar(%0)
88
0 ; RUN: llc < %s -march=x86-64 | grep movslq | count 1
11 ; PR4050
22
3 type { i64 } ; type %0
3 %0 = type { i64 } ; type %0
44 %struct.S1 = type { i16, i32 }
55 @g_10 = external global %struct.S1 ; <%struct.S1*> [#uses=2]
66
0 ; RUN: llc < %s -march=x86-64
11 ; rdar://7066579
22
3 type { i64, i64, i64, i64, i64 } ; type %0
3 %0 = type { i64, i64, i64, i64, i64 } ; type %0
44
55 define void @t() nounwind {
66 entry:
33
44 %myty = type i32
55 %myfn = type float (i32,double,i32,i16)
6 type i32(%myfn*)
7 type i32(i32)
8 type i32(i32(i32)*)
6 %0 = type i32(%myfn*)
7 %1 = type i32(i32)
8 %2 = type i32(i32(i32)*)
99
1010 %thisfuncty = type i32 (i32) *
1111
1515 %AAA = type { \2*, {\2*}, [12x{\2*}], {[1x{\2*}]} }
1616
1717 ; Test numbered types
18 type %CCC
19 type %BBB
18 %0 = type %CCC
19 %1 = type %BBB
2020 %Composite = type { %0, %1 }
21
22 ; Test simple opaque type resolution...
23 %intty = type i32
2421
2522 ; Perform a simple forward reference...
2623 %ty1 = type { %ty2, i32 }
1010 %fwd = type %fwdref*
1111
1212 ; same as above with unnamed types
13 type { %1* }
14 type %0*
13 %0 = type { %1* }
14 %1 = type %0*
1515 %test = type %1
1616
1717 %test2 = type [2 x i32]
33 ; RUN: grep 7 %t | count 1
44 ; RUN: grep 9 %t | count 1
55
6 type { i32, i32 } ; type %0
6 %0 = type { i32, i32 } ; type %0
77 @a = weak constant i32 undef ; [#uses=1]
88 @b = weak constant i32 5 ; [#uses=1]
99 @c = weak constant %0 { i32 7, i32 9 } ; <%0*> [#uses=1]
+0
-58
test/Integer/opaquetypes_bt.ll less more
None ; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
1 ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
2 ; RUN: diff %t1.ll %t2.ll
3
4 ; This test case is used to test opaque type processing, forward references,
5 ; and recursive types. Oh my.
6 ;
7
8 %SQ1 = type { i31 }
9 %SQ2 = type { %ITy }
10 %ITy = type i31
11
12
13 %CCC = type { \2* }
14 %BBB = type { \2*, \2 * }
15 %AAA = type { \2*, {\2*}, [12x{\2*}], {[1x{\2*}]} }
16
17 ; Test numbered types
18 type %CCC
19 type %BBB
20 %Composite = type { %0, %1 }
21
22 ; Test simple opaque type resolution...
23 %i31ty = type i31
24
25 ; Perform a simple forward reference...
26 %ty1 = type { %ty2, i31 }
27 %ty2 = type float
28
29 ; Do a recursive type...
30 %list = type { %list * }
31 %listp = type { %listp } *
32
33 ; Do two mutually recursive types...
34 %TyA = type { %ty2, %TyB * }
35 %TyB = type { double, %TyA * }
36
37 ; A complex recursive type...
38 %Y = type { {%Y*}, %Y* }
39 %Z = type { { %Z * }, [12x%Z] *, {{{ %Z * }}} }
40
41 ; More ridiculous test cases...
42 %A = type [ 123x %A*]
43 %M = type %M (%M, %M) *
44 %P = type %P*
45
46 ; Recursive ptrs
47 %u = type %v*
48 %v = type %u*
49
50 ; Test the parser for unnamed recursive types...
51 %P1 = type \1 *
52 %Y1 = type { { \3 * }, \2 * }
53 %Z1 = type { { \3 * }, [12x\3] *, { { { \5 * } } } }
54
55
56
57
0 ; RUN: opt < %s -scalarrepl -disable-output -stats |& grep "Number of aggregates converted to scalar"
11 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
22 target triple = "i386-apple-darwin9.6"
3 type { } ; type %0
4 type { i8*, i32, i32, i16, i16, %2, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %2, %3*, i32, [3 x i8], [1 x i8], %2, i32, i64 } ; type %1
5 type { i8*, i32 } ; type %2
6 type opaque ; type %3
7 type { i32 } ; type %4
3 %0 = type { } ; type %0
4 %1 = type { i8*, i32, i32, i16, i16, %2, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %2, %3*, i32, [3 x i8], [1 x i8], %2, i32, i64 } ; type %1
5 %2 = type { i8*, i32 } ; type %2
6 %3 = type opaque ; type %3
7 %4 = type { i32 } ; type %4
88 %llvm.dbg.anchor.type = type { i32, i32 }
99 %llvm.dbg.basictype.type = type { i32, %0*, i8*, %0*, i32, i64, i64, i64, i32, i32 }
1010 %llvm.dbg.compile_unit.type = type { i32, %0*, i32, i8*, i8*, i8*, i1, i1, i8*, i32 }
187187
188188
189189 ; rdar://6808691 - ZeroLengthMemSet
190 type <{ i32, i16, i8, i8, i64, i64, i16, [0 x i16] }>
190 %0 = type <{ i32, i16, i8, i8, i64, i64, i16, [0 x i16] }>
191191
192192 define i32 @test9() {
193193 entry: