view ir/irtype.cpp @ 1170:e40c65bd8c5d

Allow specific optimization passes to be requested from the command line. Now you can run "`ldc test.d -c -mem2reg -simplifycfg`" if you feel the urge. The -O<N> options are still supported, and are inserted in the passes list in the position where they appear on the command line. (so -simplifycfg -O1 -instcombine does the "right thing") One small change: -inline is renamed to -enable-inlining due to a naming conflict with the option to add the -inline pass. -inline now inserts the inlining pass in the position specified, not in the middle of -O<N>. (ldmd has been updated to translate -inline to -enable-inlining)
author Frits van Bommel <fvbommel wxs.nl>
date Sun, 29 Mar 2009 15:46:55 +0200
parents 340acf1535d0
children
line wrap: on
line source

#include "gen/llvm.h"
#include "ir/ir.h"
#include "ir/irtype.h"

std::set<IrType*> IrType::list;

void IrType::resetAll()
{
    std::set<IrType*>::iterator it;
    for(it = list.begin(); it != list.end(); ++it)
        (*it)->reset();
}

IrType::IrType()
{
    assert(list.insert(this).second);
    reset();
}

IrType::IrType(const IrType& s)
{
    assert(list.insert(this).second);
    type = s.type;
}

IrType::~IrType()
{
    list.erase(this);
}

void IrType::reset()
{
    type = NULL;
}