Commit be16d9b4 authored by Götz Lindenmaier's avatar Götz Lindenmaier
Browse files

*** empty log message ***

[r21]
parent 5244f0ab
4.7.2000 Goetz
Commented a whole bunch of stuff, e.g. in ircons.h (Procedure to construct)
We should change the naming of the Block constructor.
4.7.2000 Goetz
Removed acces routines to attr. "closed" of Block.
4.7.2000 Goetz
Removed second implementation of new_ir_node from ircons and some comments
concerned with the now resolved cyclic dependency.
Fixed some bugs in irgopt so that the compilation goes through.
31.5.2000 Chris
Removed some files from the archive, after dependences and usage are checked:
Removed some files from the archive, after dependencies and usage are
checked:
- 'ir/common/strerror.c'
was nowhere used;
- 'ir/ident/xx_ident.h'
......@@ -17,7 +30,29 @@
Moved the 'new_ir_node' constructor from ircons.* to irnode.* and fixed
afterwards some recursive includes, so libfirm works again.
*** Goetz has to complete this lines - several changes are not annotated yet! ***
2+3.2000 Goetz
Did a lot of changes, which I never commented until now (4.7.00).
* Added new result to Start node: Pointer to global data segment.
* Extended Semantics of SymConst node to represent information for the
linker.
* Added arithmeitc nodes (Shrs, Minus ...)
Rearranged the directory structure and adjusted the makefiles.
The directories contain:
ir: everything for the intermediate representation (better: src?)
/ir: the ir itself, and standard optimizations.
/tv: the target value module
/tr: the type and entity representation
/adt: abstract data types
/common: stuff needed by all other dirs
/debug: debugging Unterstuetzung
/ident:
include: external files needen as includes
testprograms: examples to test the lib.
The makefiles generate files with extension .d that contain the dependencies
between the files.
15.2.2000 Goetz
Added access routine to attribute link of irnode in irnode.ch.
......@@ -34,7 +69,7 @@
10.2.2000 Goetz
Changed tests from comparing enums to comparing pointers. This is more
efficient and reads better. e.g., instead get_irn_opcode == irm_And
efficient (is it?) and reads better. e.g., instead get_irn_opcode == irm_And
now get_irn_op == op_And
10.2.2000 Goetz
......
This diff is collapsed.
......@@ -58,7 +58,8 @@ enum {
pns_args /* Projection on all arguments */
} pns_number;
/* ir node attributes */
/** ir node attributes **/
/* Block attributes */
typedef struct {
unsigned long block_visit; /* for the walker that walks over all blocks. */
/* Attributes private to construction: */
......@@ -66,6 +67,10 @@ typedef struct {
struct ir_node **graph_arr; /* array to store all parameters */
} block_attr;
/* SymConst attributes */
/* This enum names the three different kinds of symbolic Constants
represented by SymConst. The content of the attribute type_or_id
depends on this tag. */
typedef enum {
type_tag, /* The SymConst is a type tag for the given type.
Type_or_id is type */
......@@ -75,6 +80,7 @@ typedef enum {
by the linker. Type_or_id is ident */
} symconst_kind;
/* This union contains the symbolic information represented by the node */
typedef union {
type *typ;
ident *ptrinfo;
......@@ -85,6 +91,7 @@ typedef struct {
symconst_kind num;
} symconst_attr;
/* Sel attributes */
typedef enum {
static_linkage, /* entity is used internal and not visible out of this
file/class. */
......@@ -97,9 +104,10 @@ typedef struct {
linkage_type *ltyp; /* linkage type of the entity */
} sel_attr;
/* Alloc attributes */
typedef enum {
stack_alloc, /* Alloc allocates the object on the stack. */
heap_alloc /* lloc allocates the object on the heap. */
heap_alloc /* Alloc allocates the object on the heap. */
} where_alloc;
typedef struct {
......@@ -141,8 +149,8 @@ struct ir_node {
during optimization to link to nodes that
shall replace a node. */
attr attr; /* attribute of this node. Depends on opcode. */
/* Must be last attribute of struct ir_node. */
} ;
/* Must be last field of struct ir_node. */
};
/* The typedefiniton of ir_node is also in irgraph.h to resolve
......@@ -217,8 +225,6 @@ inline ir_node *get_Block_cfgpred (ir_node *node, int pos);
inline void set_Block_cfgpred (ir_node *node, int pos, ir_node *pred);
inline bool get_Block_matured (ir_node *node);
inline void set_Block_matured (ir_node *node, bool matured);
inline bool get_Block_closed (ir_node *node);
inline void set_Block_closed (ir_node *node, bool closed);
inline unsigned long get_Block_block_visit (ir_node *node);
inline void set_Block_block_visit (ir_node *node, unsigned long visit);
inline ir_node *get_Block_graph_arr (ir_node *node, int pos);
......@@ -454,7 +460,7 @@ inline int is_no_Block (ir_node *node);
Start, End, Jmp, Cond, Return, Raise */
int is_cfop(ir_node *node);
/* Returns true if the operation can change the control flow because
of a exception. */
of an exception. */
int is_fragile_op(ir_node *node);
# endif /* _IRNODE_H_ */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment