@@ -144,8 +144,7 @@ class LLVMDefineVisitor : public Visitor {
144144                           decl->toChars ());
145145    LOG_SCOPE;
146146
147-     getTypeInfoType (); //  check declaration in object.d
148-     RTTIBuilder b (Type::dtypeinfo);
147+     RTTIBuilder b (getTypeInfoType ());
149148    b.finalize (gvar);
150149  }
151150
@@ -156,8 +155,7 @@ class LLVMDefineVisitor : public Visitor {
156155                           decl->toChars ());
157156    LOG_SCOPE;
158157
159-     getEnumTypeInfoType (); //  check declaration in object.d
160-     RTTIBuilder b (Type::typeinfoenum);
158+     RTTIBuilder b (getEnumTypeInfoType ());
161159
162160    assert (decl->tinfo ->ty  == Tenum);
163161    TypeEnum *tc = static_cast <TypeEnum *>(decl->tinfo );
@@ -192,8 +190,7 @@ class LLVMDefineVisitor : public Visitor {
192190                           decl->toChars ());
193191    LOG_SCOPE;
194192
195-     getPointerTypeInfoType (); //  check declaration in object.d
196-     RTTIBuilder b (Type::typeinfopointer);
193+     RTTIBuilder b (getPointerTypeInfoType ());
197194    //  TypeInfo base
198195    b.push_typeinfo (decl->tinfo ->nextOf ());
199196    //  finish
@@ -207,8 +204,7 @@ class LLVMDefineVisitor : public Visitor {
207204                           decl->toChars ());
208205    LOG_SCOPE;
209206
210-     getArrayTypeInfoType (); //  check declaration in object.d
211-     RTTIBuilder b (Type::typeinfoarray);
207+     RTTIBuilder b (getArrayTypeInfoType ());
212208    //  TypeInfo base
213209    b.push_typeinfo (decl->tinfo ->nextOf ());
214210    //  finish
@@ -225,8 +221,7 @@ class LLVMDefineVisitor : public Visitor {
225221    assert (decl->tinfo ->ty  == Tsarray);
226222    TypeSArray *tc = static_cast <TypeSArray *>(decl->tinfo );
227223
228-     getStaticArrayTypeInfoType (); //  check declaration in object.d
229-     RTTIBuilder b (Type::typeinfostaticarray);
224+     RTTIBuilder b (getStaticArrayTypeInfoType ());
230225
231226    //  value typeinfo
232227    b.push_typeinfo (tc->nextOf ());
@@ -249,8 +244,7 @@ class LLVMDefineVisitor : public Visitor {
249244    assert (decl->tinfo ->ty  == Taarray);
250245    TypeAArray *tc = static_cast <TypeAArray *>(decl->tinfo );
251246
252-     getAssociativeArrayTypeInfoType (); //  check declaration in object.d
253-     RTTIBuilder b (Type::typeinfoassociativearray);
247+     RTTIBuilder b (getAssociativeArrayTypeInfoType ());
254248
255249    //  value typeinfo
256250    b.push_typeinfo (tc->nextOf ());
@@ -269,8 +263,7 @@ class LLVMDefineVisitor : public Visitor {
269263                           decl->toChars ());
270264    LOG_SCOPE;
271265
272-     getFunctionTypeInfoType (); //  check declaration in object.d
273-     RTTIBuilder b (Type::typeinfofunction);
266+     RTTIBuilder b (getFunctionTypeInfoType ());
274267    //  TypeInfo base
275268    b.push_typeinfo (decl->tinfo ->nextOf ());
276269    //  string deco
@@ -289,8 +282,7 @@ class LLVMDefineVisitor : public Visitor {
289282    assert (decl->tinfo ->ty  == Tdelegate);
290283    Type *ret_type = decl->tinfo ->nextOf ()->nextOf ();
291284
292-     getDelegateTypeInfoType (); //  check declaration in object.d
293-     RTTIBuilder b (Type::typeinfodelegate);
285+     RTTIBuilder b (getDelegateTypeInfoType ());
294286    //  TypeInfo base
295287    b.push_typeinfo (ret_type);
296288    //  string deco
@@ -311,8 +303,9 @@ class LLVMDefineVisitor : public Visitor {
311303    TypeStruct *tc = static_cast <TypeStruct *>(decl->tinfo );
312304    StructDeclaration *sd = tc->sym ;
313305
314-     getStructTypeInfoType (); //  check declaration in object.d
315-     auto  structTypeInfoDecl = Type::typeinfostruct;
306+     //  check declaration in object.d
307+     const  auto  structTypeInfoType = getStructTypeInfoType ();
308+     const  auto  structTypeInfoDecl = Type::typeinfostruct;
316309
317310    //  On x86_64, class TypeInfo_Struct contains 2 additional fields
318311    //  (m_arg1/m_arg2) which are used for the X86_64 System V ABI varargs
@@ -329,7 +322,7 @@ class LLVMDefineVisitor : public Visitor {
329322      fatal ();
330323    }
331324
332-     RTTIBuilder b (structTypeInfoDecl );
325+     RTTIBuilder b (structTypeInfoType );
333326
334327    //  handle opaque structs
335328    if  (!sd->members ) {
@@ -492,8 +485,7 @@ class LLVMDefineVisitor : public Visitor {
492485    TypeClass *tc = static_cast <TypeClass *>(decl->tinfo );
493486    DtoResolveClass (tc->sym );
494487
495-     getInterfaceTypeInfoType (); //  check declaration in object.d
496-     RTTIBuilder b (Type::typeinfointerface);
488+     RTTIBuilder b (getInterfaceTypeInfoType ());
497489
498490    //  TypeInfo base
499491    b.push_classinfo (tc->sym );
@@ -527,8 +519,7 @@ class LLVMDefineVisitor : public Visitor {
527519    LLArrayType *arrTy = LLArrayType::get (tiTy, dim);
528520    LLConstant *arrC = LLConstantArray::get (arrTy, arrInits);
529521
530-     getTupleTypeInfoType (); //  check declaration in object.d
531-     RTTIBuilder b (Type::typeinfotypelist);
522+     RTTIBuilder b (getTupleTypeInfoType ());
532523
533524    //  push TypeInfo[]
534525    b.push_array (arrC, dim, getTypeInfoType (), nullptr );
@@ -544,8 +535,7 @@ class LLVMDefineVisitor : public Visitor {
544535                           decl->toChars ());
545536    LOG_SCOPE;
546537
547-     getConstTypeInfoType (); //  check declaration in object.d
548-     RTTIBuilder b (Type::typeinfoconst);
538+     RTTIBuilder b (getConstTypeInfoType ());
549539    //  TypeInfo base
550540    b.push_typeinfo (merge (decl->tinfo ->mutableOf ()));
551541    //  finish
@@ -559,8 +549,7 @@ class LLVMDefineVisitor : public Visitor {
559549                           decl->toChars ());
560550    LOG_SCOPE;
561551
562-     getInvariantTypeInfoType (); //  check declaration in object.d
563-     RTTIBuilder b (Type::typeinfoinvariant);
552+     RTTIBuilder b (getInvariantTypeInfoType ());
564553    //  TypeInfo base
565554    b.push_typeinfo (merge (decl->tinfo ->mutableOf ()));
566555    //  finish
@@ -574,8 +563,7 @@ class LLVMDefineVisitor : public Visitor {
574563                           decl->toChars ());
575564    LOG_SCOPE;
576565
577-     getSharedTypeInfoType (); //  check declaration in object.d
578-     RTTIBuilder b (Type::typeinfoshared);
566+     RTTIBuilder b (getSharedTypeInfoType ());
579567    //  TypeInfo base
580568    b.push_typeinfo (merge (decl->tinfo ->unSharedOf ()));
581569    //  finish
@@ -589,8 +577,7 @@ class LLVMDefineVisitor : public Visitor {
589577                           decl->toChars ());
590578    LOG_SCOPE;
591579
592-     getInoutTypeInfoType (); //  check declaration in object.d
593-     RTTIBuilder b (Type::typeinfowild);
580+     RTTIBuilder b (getInoutTypeInfoType ());
594581    //  TypeInfo base
595582    b.push_typeinfo (merge (decl->tinfo ->mutableOf ()));
596583    //  finish
@@ -607,8 +594,7 @@ class LLVMDefineVisitor : public Visitor {
607594    assert (decl->tinfo ->ty  == Tvector);
608595    TypeVector *tv = static_cast <TypeVector *>(decl->tinfo );
609596
610-     getVectorTypeInfoType (); //  check declaration in object.d
611-     RTTIBuilder b (Type::typeinfovector);
597+     RTTIBuilder b (getVectorTypeInfoType ());
612598    //  TypeInfo base
613599    b.push_typeinfo (tv->basetype );
614600    //  finish
0 commit comments