From a53616d08be710d22fd804e90b22df023cfdc0f9 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 19 Jun 2011 00:03:46 +0000 Subject: [PATCH] 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 --- lib/AsmParser/LLParser.cpp | 25 +-- .../avoid-infinite-recursion-1.ll | 52 +++--- test/Analysis/ScalarEvolution/pr3909.ll | 4 +- test/Assembler/2002-04-04-PureVirtMethCall.ll | 6 - .../Assembler/2002-04-04-PureVirtMethCall2.ll | 5 - test/Assembler/2009-02-28-CastOpc.ll | 3 +- test/Bitcode/metadata-2.ll | 6 +- test/CodeGen/Blackfin/add-overflow.ll | 2 +- test/CodeGen/Blackfin/many-args.ll | 2 +- .../CodeGen/Thumb2/2009-08-02-CoalescerBug.ll | 10 +- .../CodeGen/Thumb2/2009-08-04-CoalescerBug.ll | 10 +- .../Thumb2/2009-08-04-ScavengerAssert.ll | 12 +- test/CodeGen/X86/2009-04-09-InlineAsmCrash.ll | 165 ------------------ .../X86/2009-04-12-FastIselOverflowCrash.ll | 2 +- test/CodeGen/X86/2009-04-13-2AddrAssert-2.ll | 2 +- test/CodeGen/X86/2009-04-29-RegAllocAssert.ll | 6 +- test/CodeGen/X86/2009-06-04-VirtualLiveIn.ll | 8 +- .../X86/2009-08-14-Win64MemoryIndirectArg.ll | 4 +- test/CodeGen/X86/2009-09-19-earlyclobber.ll | 2 +- test/CodeGen/X86/coalescer-cross.ll | 4 +- test/CodeGen/X86/fast-isel-bail.ll | 2 +- test/CodeGen/X86/fold-sext-trunc.ll | 2 +- test/CodeGen/X86/inline-asm-q-regs.ll | 2 +- test/Feature/forwardreftest.ll | 6 +- test/Feature/opaquetypes.ll | 7 +- test/Feature/testtype.ll | 4 +- test/Feature/weak_constant.ll | 2 +- test/Integer/opaquetypes_bt.ll | 58 ------ .../ScalarRepl/2009-03-05-Aggre2Scalar-dbg.ll | 10 +- test/Transforms/ScalarRepl/crash.ll | 2 +- 30 files changed, 90 insertions(+), 335 deletions(-) delete mode 100644 test/Assembler/2002-04-04-PureVirtMethCall.ll delete mode 100644 test/Assembler/2002-04-04-PureVirtMethCall2.ll delete mode 100644 test/CodeGen/X86/2009-04-09-InlineAsmCrash.ll delete mode 100644 test/Integer/opaquetypes_bt.ll diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index 28ee499662a..7b7e785547e 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -170,7 +170,6 @@ bool LLParser::ParseTopLevelEntities() { case lltok::kw_module: if (ParseModuleAsm()) return true; break; case lltok::kw_target: if (ParseTargetDefinition()) return true; break; case lltok::kw_deplibs: if (ParseDepLibs()) return true; break; - case lltok::kw_type: if (ParseUnnamedType()) return true; break; case lltok::LocalVarID: if (ParseUnnamedType()) return true; break; case lltok::LocalVar: if (ParseNamedType()) return true; break; case lltok::GlobalID: if (ParseUnnamedGlobal()) return true; break; @@ -291,24 +290,18 @@ bool LLParser::ParseDepLibs() { } /// ParseUnnamedType: -/// ::= 'type' type /// ::= LocalVarID '=' 'type' type bool LLParser::ParseUnnamedType() { - unsigned TypeID = NumberedTypes.size(); - - // Handle the LocalVarID form. - if (Lex.getKind() == lltok::LocalVarID) { - if (Lex.getUIntVal() != TypeID) - return Error(Lex.getLoc(), "type expected to be numbered '%" + - Twine(TypeID) + "'"); - Lex.Lex(); // eat LocalVarID; - - if (ParseToken(lltok::equal, "expected '=' after name")) - return true; - } - LocTy TypeLoc = Lex.getLoc(); - if (ParseToken(lltok::kw_type, "expected 'type' after '='")) return true; + unsigned TypeID = NumberedTypes.size(); + if (Lex.getUIntVal() != TypeID) + return Error(Lex.getLoc(), "type expected to be numbered '%" + + Twine(TypeID) + "'"); + Lex.Lex(); // eat LocalVarID; + + if (ParseToken(lltok::equal, "expected '=' after name") || + ParseToken(lltok::kw_type, "expected 'type' after '='")) + return true; PATypeHolder Ty(Type::getVoidTy(Context)); if (ParseType(Ty)) return true; diff --git a/test/Analysis/ScalarEvolution/avoid-infinite-recursion-1.ll b/test/Analysis/ScalarEvolution/avoid-infinite-recursion-1.ll index 31b95e1470b..f61b667dcfa 100644 --- a/test/Analysis/ScalarEvolution/avoid-infinite-recursion-1.ll +++ b/test/Analysis/ScalarEvolution/avoid-infinite-recursion-1.ll @@ -7,32 +7,32 @@ target triple = "x86_64-unknown-freebsd8.0" module asm ".ident\09\22$FreeBSD: head/sys/kern/vfs_subr.c 195285 2009-07-02 14:19:33Z jamie $\22" module asm ".section set_pcpu, \22aw\22, @progbits" module asm ".previous" - type <{ [40 x i8] }> ; type %0 - type <{ %struct.vm_object*, %struct.vm_object** }> ; type %1 - type <{ %struct.vm_object* }> ; type %2 - type <{ %struct.vm_page*, %struct.vm_page** }> ; type %3 - type <{ %struct.pv_entry*, %struct.pv_entry** }> ; type %4 - type <{ %struct.vm_reserv* }> ; type %5 - type <{ %struct.bufobj*, %struct.bufobj** }> ; type %6 - type <{ %struct.proc*, %struct.proc** }> ; type %7 - type <{ %struct.thread*, %struct.thread** }> ; type %8 - type <{ %struct.prison*, %struct.prison** }> ; type %9 - type <{ %struct.prison* }> ; type %10 - type <{ %struct.task* }> ; type %11 - type <{ %struct.osd*, %struct.osd** }> ; type %12 - type <{ %struct.proc* }> ; type %13 - type <{ %struct.ksiginfo*, %struct.ksiginfo** }> ; type %14 - type <{ %struct.pv_chunk*, %struct.pv_chunk** }> ; type %15 - type <{ %struct.pgrp*, %struct.pgrp** }> ; type %16 - type <{ %struct.knote*, %struct.knote** }> ; type %17 - type <{ %struct.ktr_request*, %struct.ktr_request** }> ; type %18 - type <{ %struct.mqueue_notifier* }> ; type %19 - type <{ %struct.turnstile* }> ; type %20 - type <{ %struct.namecache* }> ; type %21 - type <{ %struct.namecache*, %struct.namecache** }> ; type %22 - type <{ %struct.lockf*, %struct.lockf** }> ; type %23 - type <{ %struct.lockf_entry*, %struct.lockf_entry** }> ; type %24 - type <{ %struct.lockf_edge*, %struct.lockf_edge** }> ; type %25 + %0 = type <{ [40 x i8] }> ; type %0 + %1 = type <{ %struct.vm_object*, %struct.vm_object** }> ; type %1 + %2 = type <{ %struct.vm_object* }> ; type %2 + %3 = type <{ %struct.vm_page*, %struct.vm_page** }> ; type %3 + %4 = type <{ %struct.pv_entry*, %struct.pv_entry** }> ; type %4 + %5 = type <{ %struct.vm_reserv* }> ; type %5 + %6 = type <{ %struct.bufobj*, %struct.bufobj** }> ; type %6 + %7 = type <{ %struct.proc*, %struct.proc** }> ; type %7 + %8 = type <{ %struct.thread*, %struct.thread** }> ; type %8 + %9 = type <{ %struct.prison*, %struct.prison** }> ; type %9 + %10 = type <{ %struct.prison* }> ; type %10 + %11 = type <{ %struct.task* }> ; type %11 + %12 = type <{ %struct.osd*, %struct.osd** }> ; type %12 + %13 = type <{ %struct.proc* }> ; type %13 + %14 = type <{ %struct.ksiginfo*, %struct.ksiginfo** }> ; type %14 + %15 = type <{ %struct.pv_chunk*, %struct.pv_chunk** }> ; type %15 + %16 = type <{ %struct.pgrp*, %struct.pgrp** }> ; type %16 + %17 = type <{ %struct.knote*, %struct.knote** }> ; type %17 + %18 = type <{ %struct.ktr_request*, %struct.ktr_request** }> ; type %18 + %19 = type <{ %struct.mqueue_notifier* }> ; type %19 + %20 = type <{ %struct.turnstile* }> ; type %20 + %21 = type <{ %struct.namecache* }> ; type %21 + %22 = type <{ %struct.namecache*, %struct.namecache** }> ; type %22 + %23 = type <{ %struct.lockf*, %struct.lockf** }> ; type %23 + %24 = type <{ %struct.lockf_entry*, %struct.lockf_entry** }> ; type %24 + %25 = type <{ %struct.lockf_edge*, %struct.lockf_edge** }> ; type %25 %struct.__siginfo = type <{ i32, i32, i32, i32, i32, i32, i8*, %union.sigval, %0 }> %struct.__sigset = type <{ [4 x i32] }> %struct.acl = type <{ i32, i32, [4 x i32], [254 x %struct.acl_entry] }> diff --git a/test/Analysis/ScalarEvolution/pr3909.ll b/test/Analysis/ScalarEvolution/pr3909.ll index 10e328ddf7e..cf7531d4322 100644 --- a/test/Analysis/ScalarEvolution/pr3909.ll +++ b/test/Analysis/ScalarEvolution/pr3909.ll @@ -2,8 +2,8 @@ ; PR 3909 - type { i32, %1* } ; type %0 - type { i32, i8* } ; type %1 + %0 = type { i32, %1* } ; type %0 + %1 = type { i32, i8* } ; type %1 define x86_stdcallcc i32 @_Dmain(%0 %unnamed) { entry: diff --git a/test/Assembler/2002-04-04-PureVirtMethCall.ll b/test/Assembler/2002-04-04-PureVirtMethCall.ll deleted file mode 100644 index 29aed55a3a9..00000000000 --- a/test/Assembler/2002-04-04-PureVirtMethCall.ll +++ /dev/null @@ -1,6 +0,0 @@ -; RUN: llvm-as %s -o /dev/null - - type { { \2 *, \4 ** }, - { \2 *, \4 ** } - } - diff --git a/test/Assembler/2002-04-04-PureVirtMethCall2.ll b/test/Assembler/2002-04-04-PureVirtMethCall2.ll deleted file mode 100644 index a0968999a92..00000000000 --- a/test/Assembler/2002-04-04-PureVirtMethCall2.ll +++ /dev/null @@ -1,5 +0,0 @@ -; RUN: llvm-as %s -o /dev/null - -%t = type { { \2*, \2 }, - { \2*, \2 } - } diff --git a/test/Assembler/2009-02-28-CastOpc.ll b/test/Assembler/2009-02-28-CastOpc.ll index ee98d41bdf9..60356439d5f 100644 --- a/test/Assembler/2009-02-28-CastOpc.ll +++ b/test/Assembler/2009-02-28-CastOpc.ll @@ -1,8 +1,7 @@ ; RUN: llvm-as < %s | llvm-dis -type i32 define void @foo() { - bitcast %0* null to i32* + bitcast i32* null to i32* ret void } diff --git a/test/Bitcode/metadata-2.ll b/test/Bitcode/metadata-2.ll index 1a59ce6f9df..dbf46b06e19 100644 --- a/test/Bitcode/metadata-2.ll +++ b/test/Bitcode/metadata-2.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as < %s | llvm-dis -o /dev/null - type { %object.ModuleInfo.__vtbl*, i8*, %"byte[]", %1, %"ClassInfo[]", i32, void ()*, void ()*, void ()*, i8*, void ()* } ; type %0 - type { i64, %object.ModuleInfo* } ; type %1 - type { i32, void ()* } ; type %2 + %0 = type { %object.ModuleInfo.__vtbl*, i8*, %"byte[]", %1, %"ClassInfo[]", i32, void ()*, void ()*, void ()*, i8*, void ()* } ; type %0 + %1 = type { i64, %object.ModuleInfo* } ; type %1 + %2 = type { i32, void ()* } ; type %2 %"ClassInfo[]" = type { i64, %object.ClassInfo** } %"Interface[]" = type { i64, %object.Interface* } %"ModuleInfo[]" = type { i64, %object.ModuleInfo** } diff --git a/test/CodeGen/Blackfin/add-overflow.ll b/test/CodeGen/Blackfin/add-overflow.ll index e982e437d68..8dcf3f84e96 100644 --- a/test/CodeGen/Blackfin/add-overflow.ll +++ b/test/CodeGen/Blackfin/add-overflow.ll @@ -1,6 +1,6 @@ ; RUN: llc < %s -march=bfin -verify-machineinstrs > %t - type { i24, i1 } ; type %0 + %0 = type { i24, i1 } ; type %0 define i1 @func2(i24 zeroext %v1, i24 zeroext %v2) nounwind { entry: diff --git a/test/CodeGen/Blackfin/many-args.ll b/test/CodeGen/Blackfin/many-args.ll index 8c52874e773..2df32ca354d 100644 --- a/test/CodeGen/Blackfin/many-args.ll +++ b/test/CodeGen/Blackfin/many-args.ll @@ -1,6 +1,6 @@ ; RUN: llc < %s -march=bfin -verify-machineinstrs - type { i32, float, float, float, float, float, float, float, float, float, float } ; type %0 + %0 = type { i32, float, float, float, float, float, float, float, float, float, float } ; type %0 %struct..s_segment_inf = type { float, i32, i16, i16, float, float, i32, float, float } define i32 @main(i32 %argc.1, i8** %argv.1) { diff --git a/test/CodeGen/Thumb2/2009-08-02-CoalescerBug.ll b/test/CodeGen/Thumb2/2009-08-02-CoalescerBug.ll index 41b30291baa..0b561032710 100644 --- a/test/CodeGen/Thumb2/2009-08-02-CoalescerBug.ll +++ b/test/CodeGen/Thumb2/2009-08-02-CoalescerBug.ll @@ -1,10 +1,10 @@ ; RUN: llc < %s -mtriple=thumbv7-apple-darwin9 -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim - type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16)*, i32 } ; type %0 - type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*)*, i32 } ; type %1 - type { void (%"struct.xalanc_1_8::FormatterToXML"*, %"struct.xalanc_1_8::XalanDOMString"*)*, i32 } ; type %2 - type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*, i32, i32)*, i32 } ; type %3 - type { void (%"struct.xalanc_1_8::FormatterToXML"*)*, i32 } ; type %4 + %0 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16)*, i32 } ; type %0 + %1 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*)*, i32 } ; type %1 + %2 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, %"struct.xalanc_1_8::XalanDOMString"*)*, i32 } ; type %2 + %3 = type { void (%"struct.xalanc_1_8::FormatterToXML"*, i16*, i32, i32)*, i32 } ; type %3 + %4 = type { void (%"struct.xalanc_1_8::FormatterToXML"*)*, i32 } ; type %4 %"struct.std::CharVectorType" = type { %"struct.std::_Vector_base >" } %"struct.std::_Bit_const_iterator" = type { %"struct.std::_Bit_iterator_base" } %"struct.std::_Bit_iterator_base" = type { i32*, i32 } diff --git a/test/CodeGen/Thumb2/2009-08-04-CoalescerBug.ll b/test/CodeGen/Thumb2/2009-08-04-CoalescerBug.ll index b8326373924..28ac28bbc55 100644 --- a/test/CodeGen/Thumb2/2009-08-04-CoalescerBug.ll +++ b/test/CodeGen/Thumb2/2009-08-04-CoalescerBug.ll @@ -1,10 +1,10 @@ ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim - type { %struct.GAP } ; type %0 - type { i16, i8, i8 } ; type %1 - type { [2 x i32], [2 x i32] } ; type %2 - type { %struct.rec* } ; type %3 - type { i8, i8, i16, i8, i8, i8, i8 } ; type %4 + %0 = type { %struct.GAP } ; type %0 + %1 = type { i16, i8, i8 } ; type %1 + %2 = type { [2 x i32], [2 x i32] } ; type %2 + %3 = type { %struct.rec* } ; type %3 + %4 = type { i8, i8, i16, i8, i8, i8, i8 } ; type %4 %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 } %struct.FILE_POS = type { i8, i8, i16, i32 } %struct.FIRST_UNION = type { %struct.FILE_POS } diff --git a/test/CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll b/test/CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll index 02fad4b930c..88accf8063e 100644 --- a/test/CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll +++ b/test/CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll @@ -1,11 +1,11 @@ ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim -O3 - type { i16, i8, i8 } ; type %0 - type { [2 x i32], [2 x i32] } ; type %1 - type { %struct.GAP } ; type %2 - type { %struct.rec* } ; type %3 - type { i8, i8, i16, i8, i8, i8, i8 } ; type %4 - type { i8, i8, i8, i8 } ; type %5 + %0 = type { i16, i8, i8 } ; type %0 + %1 = type { [2 x i32], [2 x i32] } ; type %1 + %2 = type { %struct.GAP } ; type %2 + %3 = type { %struct.rec* } ; type %3 + %4 = type { i8, i8, i16, i8, i8, i8, i8 } ; type %4 + %5 = type { i8, i8, i8, i8 } ; type %5 %struct.COMPOSITE = type { i8, i16, i16 } %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 } %struct.FILE_POS = type { i8, i8, i16, i32 } diff --git a/test/CodeGen/X86/2009-04-09-InlineAsmCrash.ll b/test/CodeGen/X86/2009-04-09-InlineAsmCrash.ll deleted file mode 100644 index 97bbd93f83f..00000000000 --- a/test/CodeGen/X86/2009-04-09-InlineAsmCrash.ll +++ /dev/null @@ -1,165 +0,0 @@ -; RUN: llc < %s -; rdar://6774324 -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" -target triple = "i386-apple-darwin10.0" - type <{ i32, %1 }> ; type %0 - type <{ [216 x i8] }> ; type %1 - 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 - type <{ %3*, %3* }> ; type %3 - type <{ %3, i32, %2*, %2*, %2*, %5*, i32, i32, %21, i64, i64, i64, i32, %22, %9*, %6, %4*, %23 }> ; type %4 - type <{ %3, %3, %4*, %4*, i32, %6, %9*, %9*, %5*, %20* }> ; type %5 - type <{ %7, i16, i8, i8, %8 }> ; type %6 - type <{ i32 }> ; type %7 - type <{ i8*, i8*, [2 x i32], i16, i8, i8, i8*, i8, i8, i8, i8, i8* }> ; type %8 - type <{ %10, %13, %15, i32, i32, i32, i32, %9*, %9*, %16*, i32, %17*, i64, i32 }> ; type %9 - type <{ i32, i32, %11 }> ; type %10 - type <{ %12 }> ; type %11 - type <{ [12 x i8] }> ; type %12 - type <{ %14 }> ; type %13 - type <{ [40 x i8] }> ; type %14 - type <{ [4 x i8] }> ; type %15 - type <{ %15, %15 }> ; type %16 - type <{ %17*, %17*, %9*, i32, %18*, %19* }> ; type %17 - type opaque ; type %18 - type <{ i32, i32, %9*, %9*, i32, i32 }> ; type %19 - type <{ %5*, %20*, %20*, %20* }> ; type %20 - type <{ %3, %3*, void (i8*, i8*)*, i8*, i8*, i64 }> ; type %21 - type <{ i32, [4 x i32], i32, i32, [128 x %3] }> ; type %22 - type <{ %24, %24, %24, %24*, %24*, %24*, %25, %26, %27, i32, i32, i8* }> ; type %23 - type <{ i64, i32, i32, i32 }> ; type %24 - type <{ i32, i32 }> ; type %25 - type <{ i32, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i32 }> ; type %26 - type <{ [16 x %17*], i32 }> ; type %27 - type <{ i8, i8, i8, i8, %7, %3 }> ; type %28 - type <{ i32, %11*, i8*, i8*, %11* }> ; type %29 - type <{ i32, i32, i32, i32, i64 }> ; type %30 - type <{ %32*, %3, %3, i32, i32, i32, %5* }> ; type %31 - type opaque ; type %32 - type <{ [44 x i8] }> ; type %33 - type <{ %17* }> ; type %34 - type <{ %36, %36*, i32, [4 x %40], i32, i32, i64, i32 }> ; type %35 - type <{ i8*, %0*, %37*, i64, %39, i32, %39, %6, i64, i64, i8*, i32 }> ; type %36 - type <{ i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, %38 }> ; type %37 - 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 - type <{ i8, i8, i8, i8, i8, i8, i8, i8 }> ; type %39 - type <{ i64 }> ; type %40 - 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 - type <{ %43, %44, %47*, i64, i64, i64, i32, %11, %54, %46*, %46*, i32, i32, i32, i32, i32, i32, i32 }> ; type %42 - type <{ i16, i8, i8, i32, i32 }> ; type %43 - type <{ %45, i32, i32 }> ; type %44 - type <{ %46*, %46*, i64, i64 }> ; type %45 - type <{ %45, %15, i64, i8, i8, i8, i8, i16, i16 }> ; type %46 - type <{ i64*, i64, %48*, i32, i32, i32, %6, %53, i32, i64, i64*, i64*, %48*, %48*, %48*, i32 }> ; type %47 - 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 - type <{ %3, %3, %49*, %48*, i64, i8, i8, i8, i8, i32, i8, i8, i8, i8 }> ; type %49 - type <{ i32, %51* }> ; type %50 - 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 - type <{ i32, %48* }> ; type %52 - type <{ i32, i32, i32 }> ; type %53 - type <{ %11, %55*, i32, %53, i64 }> ; type %54 - type <{ %3, i32, i32, i32, i32, i32, [64 x i8], %56 }> ; type %55 - type <{ %57, %58, %58 }> ; type %56 - type <{ i64, i64, i64, i64, i64 }> ; type %57 - type <{ i64, i64, i64, i64, i64, i64, i64, i64 }> ; type %58 - type <{ [2 x i32] }> ; type %59 - type <{ [8 x i32] }> ; type %60 - type <{ %9*, i32, i32, i32 }> ; type %61 - type <{ %11, i32, %11, i32, i32, %63*, i32, %64*, %65, i32, i32, i32, i32, %41* }> ; type %62 - type <{ %10*, i32, %15, %15 }> ; type %63 - type opaque ; type %64 - type <{ i32, %66*, %66*, %66**, %66*, %66** }> ; type %65 - type <{ %63, i32, %62*, %66*, %66* }> ; type %66 - type <{ i32, i32, [0 x %39] }> ; type %67 - type opaque ; type %68 - type <{ %69*, void (%69*, %2*)* }> ; type %69 - 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 - type <{ %3, i64, i32, i32 }> ; type %71 - type <{ i64, i64, i64 }> ; type %72 - 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 - type <{ %74*, %74*, %75*, %76*, %73*, i32, i32, i32, i32, i32, i8*, i8* }> ; type %74 - type <{ %75*, %73*, %74*, %76*, i32, i32, i32, i32, %78*, i8*, i8* }> ; type %75 - type <{ %76*, %73*, %74*, %75*, i32, i32, i32, i32, i8*, i8*, %77* }> ; type %76 - type opaque ; type %77 - type <{ %78*, %75*, i8, i8, i8, i8, i16, i16, i16, i8, i8, i32, [0 x %73*] }> ; type %78 - type <{ i32, i32, i32, [20 x %80] }> ; type %79 - type <{ i64*, i8* }> ; type %80 - 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 - 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 - type <{ [16 x i64], i64 }> ; type %83 - type <{ %82*, %85, %85, %39*, i32 }> ; type %84 - type <{ i16, %39* }> ; type %85 - type <{ %87, i8* }> ; type %86 - 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 - type <{ i64, i64, i32, i32, i32, i32 }> ; type %88 - type <{ i32, i32, i32, i32, i32, i32, i32 }> ; type %89 -@kernel_stack_size = external global i32 ; [#uses=1] - -define void @test(%0*) nounwind { - %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] - %3 = getelementptr %2* %2, i32 0, i32 15 ; [#uses=1] - %4 = load i32* %3 ; [#uses=2] - %5 = icmp eq i32 %4, 0 ; [#uses=1] - br i1 %5, label %47, label %6 - -;