libFirm 1.20
|
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