Wiki Roadmap Timeline Tickets New Ticket Source Search Help / Guide About Trac Login

Changeset 803:c62c6936635b

Show
Ignore:
Timestamp:
11/29/08 15:26:50 (1 month ago)
Author:
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
branch:
default
Message:

Removed DtoConstFieldInitializer?, it's no longer needed and was buggy.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gen/classes.cpp

    r802 r803  
    486486        // and build its constant initializer lazily 
    487487        if (!var->ir.irField->constInit) 
    488             var->ir.irField->constInit = DtoConstFieldInitializer(var->loc, var->type, var->init); 
     488            var->ir.irField->constInit = DtoConstInitializer(var->loc, var->type, var->init); 
    489489        inits.push_back(var->ir.irField->constInit); 
    490490 
  • gen/llvmhelpers.cpp

    r798 r803  
    14291429////////////////////////////////////////////////////////////////////////////////////////// 
    14301430 
    1431 LLConstant* DtoConstFieldInitializer(Loc loc, Type* t, Initializer* init) 
    1432 { 
    1433     Logger::println("DtoConstFieldInitializer"); 
    1434     LOG_SCOPE; 
    1435  
    1436     const LLType* _type = DtoType(t); 
    1437  
    1438     LLConstant* _init = DtoConstInitializer(loc, t, init); 
    1439     assert(_init); 
    1440     if (_type != _init->getType()) 
    1441     { 
    1442         if (Logger::enabled()) 
    1443             Logger::cout() << "field init is: " << *_init << " type should be " << *_type << '\n'; 
    1444         if (t->ty == Tsarray) 
    1445         { 
    1446             const LLArrayType* arrty = isaArray(_type); 
    1447             uint64_t n = arrty->getNumElements(); 
    1448             std::vector<LLConstant*> vals(n,_init); 
    1449             _init = llvm::ConstantArray::get(arrty, vals); 
    1450         } 
    1451         else if (t->ty == Tarray) 
    1452         { 
    1453             assert(isaStruct(_type)); 
    1454             _init = llvm::ConstantAggregateZero::get(_type); 
    1455         } 
    1456         else if (t->ty == Tstruct) 
    1457         { 
    1458             const LLStructType* structty = isaStruct(_type); 
    1459             TypeStruct* ts = (TypeStruct*)t; 
    1460             assert(ts); 
    1461             assert(ts->sym); 
    1462             assert(ts->sym->ir.irStruct->constInit); 
    1463             _init = ts->sym->ir.irStruct->constInit; 
    1464         } 
    1465         else if (t->ty == Tclass) 
    1466         { 
    1467             _init = llvm::Constant::getNullValue(_type); 
    1468         } 
    1469         else { 
    1470             Logger::println("failed for type %s", t->toChars()); 
    1471             assert(0); 
    1472         } 
    1473     } 
    1474  
    1475     return _init; 
    1476 } 
    1477  
    1478 ////////////////////////////////////////////////////////////////////////////////////////// 
    1479  
    14801431DValue* DtoInitializer(LLValue* target, Initializer* init) 
    14811432{ 
     
    15381489 
    15391490    LLSmallVector<size_t, 4> dims; 
    1540  
    1541     // handle zero initializers 
    1542     if (expbase->isintegral() && exp->isConst()) 
    1543     { 
    1544         if (!exp->toInteger()) 
    1545             return LLConstant::getNullValue(dstTy); 
    1546     } 
    1547     else if (exp->op == TOKnull) 
    1548     { 
    1549         return LLConstant::getNullValue(dstTy); 
    1550     } 
    15511491 
    15521492    while(1) 
  • gen/llvmhelpers.h

    r797 r803  
    8888// initializer helpers 
    8989LLConstant* DtoConstInitializer(Loc loc, Type* type, Initializer* init); 
    90 LLConstant* DtoConstFieldInitializer(Loc loc, Type* type, Initializer* init); 
    9190LLConstant* DtoConstExpInit(Loc loc, Type* t, Expression* exp); 
    9291DValue* DtoInitializer(LLValue* target, Initializer* init); 
  • gen/structs.cpp

    r802 r803  
    209209                Logger::println("adding default field: %s : +%u", nextdef->toChars(), nextdef->offset); 
    210210                if (!nextdef->ir.irField->constInit) 
    211                     nextdef->ir.irField->constInit = DtoConstFieldInitializer(nextdef->loc, nextdef->type, nextdef->init); 
     211                    nextdef->ir.irField->constInit = DtoConstInitializer(nextdef->loc, nextdef->type, nextdef->init); 
    212212                LLConstant* c = nextdef->ir.irField->constInit; 
    213213                inits.push_back(c); 
     
    264264            Logger::println("adding default field: %s : +%u", nextdef->toChars(), nextdef->offset); 
    265265            if (!nextdef->ir.irField->constInit) 
    266                 nextdef->ir.irField->constInit = DtoConstFieldInitializer(nextdef->loc, nextdef->type, nextdef->init); 
     266                nextdef->ir.irField->constInit = DtoConstInitializer(nextdef->loc, nextdef->type, nextdef->init); 
    267267            LLConstant* c = nextdef->ir.irField->constInit; 
    268268            inits.push_back(c); 
  • ir/irstruct.cpp

    r802 r803  
    320320            // lazily default initialize 
    321321            if (!var->ir.irField->constInit) 
    322                 var->ir.irField->constInit = DtoConstFieldInitializer(var->loc, var->type, var->init); 
     322                var->ir.irField->constInit = DtoConstInitializer(var->loc, var->type, var->init); 
    323323            inits.push_back(var->ir.irField->constInit); 
    324324 
Copyright © 2008, LDC Development Team.