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

Changeset 619:722630261d62

Show
Ignore:
Timestamp:
09/28/08 15:09:21 (3 months ago)
Author:
tomas@myhost
Children:

621:0ecdb11ca85e 622:26fce59fe80a

branch:
default
Message:

Implemented constant pointer casts (like casting function pointer to void* as a constant global initializer)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • dmd/expression.h

    r599 r619  
    10041004    // For operator overloading 
    10051005    Identifier *opId(); 
     1006 
     1007    // LLVMDC 
     1008    virtual llvm::Constant *toConstElem(IRState *irs); 
    10061009}; 
    10071010 
  • gen/toir.cpp

    r616 r619  
    816816    else 
    817817        return v; 
     818} 
     819 
     820////////////////////////////////////////////////////////////////////////////////////////// 
     821 
     822LLConstant* CastExp::toConstElem(IRState* p) 
     823{ 
     824    Logger::print("CastExp::toConstElem: %s | %s\n", toChars(), type->toChars()); 
     825    LOG_SCOPE; 
     826 
     827    LLConstant* c = e1->toConstElem(p); 
     828    assert(isaPointer(c->getType())); 
     829 
     830    const LLType* lltype = DtoType(type); 
     831    assert(isaPointer(lltype)); 
     832 
     833    return llvm::ConstantExpr::getBitCast(c, lltype); 
    818834} 
    819835 
Copyright © 2008, LDC Development Team.