Skip to content
  • Richard Smith's avatar
    constexpr irgen: Add irgen support for APValue::Struct, APValue::Union, · dafff947
    Richard Smith authored
    APValue::Array and APValue::MemberPointer. All APValue values can now be emitted
    as constants.
    
    Add new CGCXXABI entry point for emitting an APValue MemberPointer. The other
    entrypoints dealing with constant member pointers are no longer necessary and
    will be removed in a later change.
    
    Switch codegen from using EvaluateAsRValue/EvaluateAsLValue to
    VarDecl::evaluateValue. This performs caching and deals with the nasty cases in
    C++11 where a non-const object's initializer can refer indirectly to
    previously-initialized fields within the same object.
    
    Building the intermediate APValue object incurs a measurable performance hit on
    pathological testcases with huge initializer lists, so we continue to build IR
    directly from the Expr nodes for array and record types outside of C++11.
    
    llvm-svn: 148178
    dafff947
Loading