libFirm 1.20
libfirm/ircons.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 1995-2010 University of Karlsruhe.  All right reserved.
00003  *
00004  * This file is part of libFirm.
00005  *
00006  * This file may be distributed and/or modified under the terms of the
00007  * GNU General Public License version 2 as published by the Free Software
00008  * Foundation and appearing in the file LICENSE.GPL included in the
00009  * packaging of this file.
00010  *
00011  * Licensees holding valid libFirm Professional Edition licenses may use
00012  * this file in accordance with the libFirm Commercial License.
00013  * Agreement provided with the Software.
00014  *
00015  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00016  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00017  * PURPOSE.
00018  */
00019 
00309 #ifndef FIRM_IR_IRCONS_H
00310 #define FIRM_IR_IRCONS_H
00311 
00312 #include "firm_types.h"
00313 #include "begin.h"
00314 #include "irnode.h"
00315 
00334 FIRM_API ir_node *new_rd_Const_long(dbg_info *db, ir_graph *irg,
00335                                     ir_mode *mode, long value);
00336 
00349 FIRM_API ir_node *new_r_Const_long(ir_graph *irg, ir_mode *mode, long value);
00350 
00358 FIRM_API ir_node *new_d_Const_long(dbg_info *db, ir_mode *mode, long value);
00359 
00371 FIRM_API ir_node *new_Const_long(ir_mode *mode, long value);
00372 
00412 FIRM_API ir_node *new_rd_SymConst(dbg_info *db, ir_graph *irg, ir_mode *mode,
00413                                   union symconst_symbol value,
00414                                   symconst_kind kind);
00415 
00422 FIRM_API ir_node *new_rd_SymConst_addr_ent(dbg_info *db, ir_graph *irg,
00423                                            ir_mode *mode, ir_entity *symbol);
00424 
00431 FIRM_API ir_node *new_rd_SymConst_ofs_ent(dbg_info *db, ir_graph *irg,
00432                                           ir_mode *mode, ir_entity *symbol);
00433 
00440 FIRM_API ir_node *new_rd_SymConst_size(dbg_info *db, ir_graph *irg,
00441                                        ir_mode *mode, ir_type *symbol);
00442 
00449 FIRM_API ir_node *new_rd_SymConst_align(dbg_info *db, ir_graph *irg,
00450                                         ir_mode *mode, ir_type *symbol);
00451 
00484 FIRM_API ir_node *new_r_SymConst(ir_graph *irg, ir_mode *mode,
00485                                  union symconst_symbol value,
00486                                  symconst_kind kind);
00487 
00520 FIRM_API ir_node *new_d_SymConst(dbg_info *db, ir_mode *mode,
00521                                  union symconst_symbol value,
00522                                  symconst_kind kind);
00523 
00555 FIRM_API ir_node *new_SymConst(ir_mode *mode, union symconst_symbol value,
00556                                symconst_kind kind);
00557 
00571 FIRM_API ir_node *new_rd_strictConv(dbg_info *db, ir_node *block,
00572                                     ir_node *op, ir_mode *mode);
00573 
00580 FIRM_API ir_node *new_r_strictConv(ir_node *block, ir_node *op, ir_mode *mode);
00581 
00588 FIRM_API ir_node *new_d_strictConv(dbg_info *db, ir_node *op, ir_mode *mode);
00589 
00595 FIRM_API ir_node *new_strictConv(ir_node *op, ir_mode *mode);
00596 
00617 FIRM_API ir_node *new_rd_simpleSel(dbg_info *db, ir_node *block, ir_node *store,
00618                                    ir_node *objptr, ir_entity *ent);
00619 
00634 FIRM_API ir_node *new_r_simpleSel(ir_node *block, ir_node *store,
00635                                   ir_node *objptr, ir_entity *ent);
00636 
00650 FIRM_API ir_node *new_d_simpleSel(dbg_info *db, ir_node *store, ir_node *objptr,
00651                                   ir_entity *ent);
00652 
00663 FIRM_API ir_node *new_simpleSel(ir_node *store, ir_node *objptr,
00664                                 ir_entity *ent);
00665 
00682 FIRM_API ir_node *new_rd_DivRL(dbg_info *db, ir_node *block, ir_node *memop,
00683                                ir_node *op1, ir_node *op2, ir_mode *mode,
00684                                op_pin_state state);
00685 
00695 FIRM_API ir_node *new_r_DivRL(ir_node *block, ir_node *memop,
00696                               ir_node *op1, ir_node *op2, ir_mode *mode,
00697                               op_pin_state state);
00698 
00710 FIRM_API ir_node *new_d_DivRL(dbg_info *db, ir_node *memop,
00711                               ir_node *op1, ir_node *op2, ir_mode *mode,
00712                               op_pin_state state);
00713 
00724 FIRM_API ir_node *new_DivRL(ir_node *memop, ir_node *op1, ir_node *op2,
00725                             ir_mode *mode, op_pin_state state);
00726 
00746 FIRM_API ir_node *new_rd_ASM(dbg_info *db, ir_node *block,
00747                             int arity, ir_node *in[], ir_asm_constraint *inputs,
00748                             size_t n_outs, ir_asm_constraint *outputs,
00749                             size_t n_clobber, ident *clobber[],
00750                             ident *asm_text);
00751 
00764 FIRM_API ir_node *new_r_ASM(ir_node *block,
00765                             int arity, ir_node *in[], ir_asm_constraint *inputs,
00766                             size_t n_outs, ir_asm_constraint *outputs,
00767                             size_t n_clobber, ident *clobber[],
00768                             ident *asm_text);
00769 
00783 FIRM_API ir_node *new_d_ASM(dbg_info *db, int arity, ir_node *in[],
00784                             ir_asm_constraint *inputs,
00785                             size_t n_outs, ir_asm_constraint *outputs,
00786                             size_t n_clobber, ident *clobber[],
00787                             ident *asm_text);
00788 
00801 FIRM_API ir_node *new_ASM(int arity, ir_node *in[], ir_asm_constraint *inputs,
00802                           size_t n_outs, ir_asm_constraint *outputs,
00803                           size_t n_clobber, ident *clobber[], ident *asm_text);
00804 
00816 FIRM_API ir_graph *current_ir_graph;
00817 
00821 FIRM_API ir_graph *get_current_ir_graph(void);
00822 
00826 FIRM_API void set_current_ir_graph(ir_graph *graph);
00827 
00837 FIRM_API ir_node *new_d_immBlock(dbg_info *db);
00847 FIRM_API ir_node *new_immBlock(void);
00856 FIRM_API ir_node *new_r_immBlock(ir_graph *irg);
00865 FIRM_API ir_node *new_rd_immBlock(dbg_info *db, ir_graph *irg);
00866 
00868 FIRM_API void add_immBlock_pred(ir_node *immblock, ir_node *jmp);
00869 
00871 FIRM_API void mature_immBlock(ir_node *block);
00872 
00879 FIRM_API void set_cur_block(ir_node *target);
00884 FIRM_API void set_r_cur_block(ir_graph *irg, ir_node *target);
00885 
00887 FIRM_API ir_node *get_cur_block(void);
00889 FIRM_API ir_node *get_r_cur_block(ir_graph *irg);
00890 
00900 FIRM_API ir_node *get_value(int pos, ir_mode *mode);
00903 FIRM_API ir_node *get_r_value(ir_graph *irg, int pos, ir_mode *mode);
00904 
00913 FIRM_API ir_mode *ir_guess_mode(int pos);
00917 FIRM_API ir_mode *ir_r_guess_mode(ir_graph *irg, int pos);
00918 
00929 FIRM_API void set_value(int pos, ir_node *value);
00931 FIRM_API void set_r_value(ir_graph *irg, int pos, ir_node *value);
00932 
00941 FIRM_API int find_value(ir_node *value);
00946 FIRM_API int r_find_value(ir_graph *irg, ir_node *value);
00947 
00954 FIRM_API ir_node *get_store(void);
00957 FIRM_API ir_node *get_r_store(ir_graph *irg);
00958 
00966 FIRM_API void set_store(ir_node *store);
00969 FIRM_API void set_r_store(ir_graph *irg, ir_node *store);
00970 
00975 FIRM_API void keep_alive(ir_node *ka);
00976 
00978 FIRM_API void irg_finalize_cons(ir_graph *irg);
00979 
00984 FIRM_API void irp_finalize_cons(void);
00985 
00990 FIRM_API void ir_set_uninitialized_local_variable_func(
00991         uninitialized_local_variable_func_t *func);
00992 
00995 #include "end.h"
00996 
00997 #endif