annotate ir/irsymbol.h @ 1275:bedf0bfb8fdb

Implement first D-specific optimization pass: -simplify-drtcalls. It uses the machinery of the standard -simplify-libcalls pass, but optimizes calls to the D runtime instead of calls to C libraries. At the moment, these optimizations are implemented by this pass: - Avoid the runtime call for `arr.length = newlen` if it can determine that the new length isn't longer than the old one. - Ditto for `cast(T[]) arr` if it will clearly always succeed. (e.g. if the length of the original array is zero, or if the old element size is a multiple of the new element size)
author Frits van Bommel <fvbommel wxs.nl>
date Tue, 28 Apr 2009 21:58:06 +0200
parents 2a687353c84d
children 46f6365a50d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1150
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
1 #ifndef __LDC_IR_IRSYMBOL_H__
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
2 #define __LDC_IR_IRSYMBOL_H__
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
3
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
4 #include "ir/ir.h"
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
5
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
6 /// Base class for all symbols.
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
7 struct IrSymbol
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
8 {
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
9 ///
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
10 IrSymbol(Ir* ir) : ir(ir) {}
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
11
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
12 /// Migrate symbols to current module if necessary.
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
13 virtual void migrate() = 0;
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
14
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
15 protected:
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
16 ///
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
17 Ir* ir;
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
18 };
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
19
2a687353c84d Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff changeset
20 #endif