mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-14 20:03:14 +01:00
Remove unused DMD IRState implementations.
This commit is contained in:
202
dmd2/irstate.c
202
dmd2/irstate.c
@@ -1,202 +0,0 @@
|
||||
|
||||
// Compiler implementation of the D programming language
|
||||
// Copyright (c) 1999-2011 by Digital Mars
|
||||
// All Rights Reserved
|
||||
// written by Walter Bright
|
||||
// http://www.digitalmars.com
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "mars.h"
|
||||
#include "mtype.h"
|
||||
#include "declaration.h"
|
||||
#include "irstate.h"
|
||||
#include "statement.h"
|
||||
|
||||
IRState::IRState(IRState *irs, Statement *s)
|
||||
{
|
||||
prev = irs;
|
||||
statement = s;
|
||||
symbol = NULL;
|
||||
breakBlock = NULL;
|
||||
contBlock = NULL;
|
||||
switchBlock = NULL;
|
||||
defaultBlock = NULL;
|
||||
ident = NULL;
|
||||
ehidden = NULL;
|
||||
startaddress = NULL;
|
||||
if (irs)
|
||||
{
|
||||
m = irs->m;
|
||||
shidden = irs->shidden;
|
||||
sclosure = irs->sclosure;
|
||||
sthis = irs->sthis;
|
||||
blx = irs->blx;
|
||||
deferToObj = irs->deferToObj;
|
||||
varsInScope = irs->varsInScope;
|
||||
}
|
||||
else
|
||||
{
|
||||
m = NULL;
|
||||
shidden = NULL;
|
||||
sclosure = NULL;
|
||||
sthis = NULL;
|
||||
blx = NULL;
|
||||
deferToObj = NULL;
|
||||
varsInScope = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
IRState::IRState(IRState *irs, Dsymbol *s)
|
||||
{
|
||||
prev = irs;
|
||||
statement = NULL;
|
||||
symbol = s;
|
||||
breakBlock = NULL;
|
||||
contBlock = NULL;
|
||||
switchBlock = NULL;
|
||||
defaultBlock = NULL;
|
||||
ident = NULL;
|
||||
ehidden = NULL;
|
||||
startaddress = NULL;
|
||||
if (irs)
|
||||
{
|
||||
m = irs->m;
|
||||
shidden = irs->shidden;
|
||||
sclosure = irs->sclosure;
|
||||
sthis = irs->sthis;
|
||||
blx = irs->blx;
|
||||
deferToObj = irs->deferToObj;
|
||||
varsInScope = irs->varsInScope;
|
||||
}
|
||||
else
|
||||
{
|
||||
m = NULL;
|
||||
shidden = NULL;
|
||||
sclosure = NULL;
|
||||
sthis = NULL;
|
||||
blx = NULL;
|
||||
deferToObj = NULL;
|
||||
varsInScope = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
IRState::IRState(Module *m, Dsymbol *s)
|
||||
{
|
||||
prev = NULL;
|
||||
statement = NULL;
|
||||
this->m = m;
|
||||
symbol = s;
|
||||
breakBlock = NULL;
|
||||
contBlock = NULL;
|
||||
switchBlock = NULL;
|
||||
defaultBlock = NULL;
|
||||
ident = NULL;
|
||||
ehidden = NULL;
|
||||
shidden = NULL;
|
||||
sclosure = NULL;
|
||||
sthis = NULL;
|
||||
blx = NULL;
|
||||
deferToObj = NULL;
|
||||
startaddress = NULL;
|
||||
varsInScope = NULL;
|
||||
}
|
||||
|
||||
block *IRState::getBreakBlock(Identifier *ident)
|
||||
{
|
||||
IRState *bc;
|
||||
if (ident) {
|
||||
Statement *related = NULL;
|
||||
block *ret = NULL;
|
||||
for (bc = this; bc; bc = bc->prev) {
|
||||
// The label for a breakBlock may actually be some levels up (e.g.
|
||||
// on a try/finally wrapping a loop). We'll see if this breakBlock
|
||||
// is the one to return once we reach that outer statement (which
|
||||
// in many cases will be this same statement).
|
||||
if (bc->breakBlock) {
|
||||
related = bc->statement->getRelatedLabeled();
|
||||
ret = bc->breakBlock;
|
||||
}
|
||||
if (bc->statement == related && bc->prev->ident == ident)
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
for (bc = this; bc; bc = bc->prev) {
|
||||
if (bc->breakBlock)
|
||||
return bc->breakBlock;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
block *IRState::getContBlock(Identifier *ident)
|
||||
{
|
||||
IRState *bc;
|
||||
|
||||
for (bc = this; bc; bc = bc->prev)
|
||||
{
|
||||
if (ident)
|
||||
{
|
||||
if (bc->prev && bc->prev->ident == ident)
|
||||
return bc->contBlock;
|
||||
}
|
||||
else if (bc->contBlock)
|
||||
return bc->contBlock;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
block *IRState::getSwitchBlock()
|
||||
{
|
||||
IRState *bc;
|
||||
|
||||
for (bc = this; bc; bc = bc->prev)
|
||||
{
|
||||
if (bc->switchBlock)
|
||||
return bc->switchBlock;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
block *IRState::getDefaultBlock()
|
||||
{
|
||||
IRState *bc;
|
||||
|
||||
for (bc = this; bc; bc = bc->prev)
|
||||
{
|
||||
if (bc->defaultBlock)
|
||||
return bc->defaultBlock;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
FuncDeclaration *IRState::getFunc()
|
||||
{
|
||||
IRState *bc;
|
||||
|
||||
for (bc = this; bc->prev; bc = bc->prev)
|
||||
{
|
||||
}
|
||||
return (FuncDeclaration *)(bc->symbol);
|
||||
}
|
||||
|
||||
|
||||
/**********************
|
||||
* Return !=0 if do array bounds checking
|
||||
*/
|
||||
int IRState::arrayBoundsCheck()
|
||||
{
|
||||
int result = global.params.useArrayBounds;
|
||||
|
||||
if (result == 1)
|
||||
{ // For safe functions only
|
||||
result = 0;
|
||||
FuncDeclaration *fd = getFunc();
|
||||
if (fd)
|
||||
{ Type *t = fd->type;
|
||||
if (t->ty == Tfunction && ((TypeFunction *)t)->trust == TRUSTsafe)
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
|
||||
// Compiler implementation of the D programming language
|
||||
// Copyright (c) 1999-2011 by Digital Mars
|
||||
// All Rights Reserved
|
||||
// written by Walter Bright
|
||||
// http://www.digitalmars.com
|
||||
|
||||
#ifndef DMD_CONTEXT_H
|
||||
#define DMD_CONTEXT_H
|
||||
|
||||
#ifdef __DMC__
|
||||
#pragma once
|
||||
#endif /* __DMC__ */
|
||||
|
||||
struct Module;
|
||||
struct Statement;
|
||||
struct block;
|
||||
struct Dsymbol;
|
||||
struct Identifier;
|
||||
struct Symbol;
|
||||
struct FuncDeclaration;
|
||||
struct Blockx;
|
||||
#if IN_LLVM
|
||||
class DValue;
|
||||
typedef DValue elem;
|
||||
#else
|
||||
struct elem;
|
||||
#endif
|
||||
#include "arraytypes.h"
|
||||
|
||||
struct IRState
|
||||
{
|
||||
IRState *prev;
|
||||
Statement *statement;
|
||||
Module *m; // module
|
||||
Dsymbol *symbol;
|
||||
Identifier *ident;
|
||||
Symbol *shidden; // hidden parameter to function
|
||||
Symbol *sthis; // 'this' parameter to function (member and nested)
|
||||
Symbol *sclosure; // pointer to closure instance
|
||||
Blockx *blx;
|
||||
Dsymbols *deferToObj; // array of Dsymbol's to run toObjFile(int multiobj) on later
|
||||
elem *ehidden; // transmit hidden pointer to CallExp::toElem()
|
||||
Symbol *startaddress;
|
||||
VarDeclarations *varsInScope; // variables that are in scope that will need destruction later
|
||||
|
||||
block *breakBlock;
|
||||
block *contBlock;
|
||||
block *switchBlock;
|
||||
block *defaultBlock;
|
||||
|
||||
IRState(IRState *irs, Statement *s);
|
||||
IRState(IRState *irs, Dsymbol *s);
|
||||
IRState(Module *m, Dsymbol *s);
|
||||
|
||||
block *getBreakBlock(Identifier *ident);
|
||||
block *getContBlock(Identifier *ident);
|
||||
block *getSwitchBlock();
|
||||
block *getDefaultBlock();
|
||||
FuncDeclaration *getFunc();
|
||||
int arrayBoundsCheck();
|
||||
};
|
||||
|
||||
#endif /* DMD_CONTEXT_H */
|
||||
Reference in New Issue
Block a user