#include "workaround.h"#include "wintrinsic.h"#include "wio.h"


Go to the source code of this file.
Data Types | |
| module | WN |
| module | STMT_WN |
Defines | |
| #define | MAX_FIELD_ID 0x3ffe |
| #define | UNKNOWN_FIELD_ID 0x3fff |
| #define | WN_num_dim(x) (WN_kid_count(x)>>1) |
| #define | WN_asm_clobbers(x) (WN_kid0(x)) |
| #define | WN_asm_constraints(x) (WN_kid1(x)) |
| #define | WN_has_sym(x) (OPERATOR_has_sym(WN_operator(x))) |
| #define | WN_parm_flag(x) WN_call_flag(x) |
| #define | WN_region_is_EH(x) (WN_region_kind(x) & REGION_KIND_EH) |
| #define | WN_label_loop_info(x) (WN_kid_count(x)>0 ? WN_kid((x),0) : NULL) |
| #define | WN_set_label_loop_info(x, li) (WN_kid0(x) = (li)) |
| #define | WN_PRAGMA_COMPILER_GENERATED 0x01 |
| #define | WN_PRAGMA_OMP 0x02 |
| #define | WN_pragma_compiler_generated(x) ((WN_pragma_flags(x))&WN_PRAGMA_COMPILER_GENERATED) |
| #define | WN_set_pragma_compiler_generated(x) ((WN_pragma_flags(x))|=WN_PRAGMA_COMPILER_GENERATED) |
| #define | WN_pragma_omp(x) ((WN_pragma_flags(x)) & WN_PRAGMA_OMP) |
| #define | WN_set_pragma_omp(x) ((WN_pragma_flags(x)) |= WN_PRAGMA_OMP) |
| #define | WN_reset_pragma_omp(x) ((WN_pragma_flags(x)) &= ~(WN_PRAGMA_OMP)) |
| #define | WN_entry_name(x) WN_st_idx(x) |
| #define | WN_formal(x, i) WN_kid((x),i) |
| #define | WN_num_formals(x) (WN_kid_count(x)-3) |
| #define | WN_func_pragmas(x) WN_kid((x),WN_kid_count(x)-3) |
| #define | WN_func_varrefs(x) WN_kid((x),WN_kid_count(x)-2) |
| #define | WN_func_body(x) WN_kid((x),WN_kid_count(x)-1) |
| #define | WN_entry_first(x) WN_first(WN_func_body(x)) |
| #define | WN_entry_last(x) WN_last(WN_func_body(x)) |
| #define | WN_actual(x, i) WN_kid((x),i) |
| #define | WN_index(x) WN_kid((x),0) |
| #define | WN_start(x) WN_kid((x),1) |
| #define | WN_end(x) WN_kid((x),2) |
| #define | WN_step(x) WN_kid((x),3) |
| #define | WN_do_body(x) WN_kid((x),4) |
| #define | WN_do_loop_info(x) (WN_kid_count(x)>5 ? WN_kid((x),5) : NULL) |
| #define | WN_set_do_loop_info(x, li) (WN_kid((x),5) = (li)) |
| #define | WN_while_test(x) WN_kid((x),0) |
| #define | WN_while_body(x) WN_kid((x),1) |
| #define | WN_if_test(x) WN_kid((x),0) |
| #define | WN_then(x) WN_kid((x),1) |
| #define | WN_else(x) WN_kid((x),2) |
| #define | WN_else_is_empty(x) (WN_first(WN_else(x)) == NULL) |
| #define | WN_region_exits(x) WN_kid((x),0) |
| #define | WN_region_pragmas(x) WN_kid((x),1) |
| #define | WN_region_body(x) WN_kid((x),2) |
| #define | WN_array_index(x, i) WN_kid((x),WN_num_dim(x)+i+1) |
| #define | WN_array_dim(x, i) WN_kid((x),i+1) |
| #define | WN_array_base(x) WN_kid((x),0) |
| #define | WN_loop_induction(x) (WN_kid_count(x)>0 ? WN_kid((x),0) : NULL) |
| #define | WN_set_loop_induction(x, ind) (WN_kid((x),0) = (ind)) |
| #define | WN_loop_trip(x) (WN_kid_count(x)>1 ? WN_kid((x),1) : NULL) |
| #define | WN_set_loop_trip(x, trip) (WN_kid((x),1) = (trip)) |
| #define | WN_switch_test(x) WN_kid((x),0) |
| #define | WN_switch_table(x) WN_kid((x),1) |
| #define | WN_switch_default(x) WN_kid((x),2) |
| #define | max(a, b) ((a > b) ? a : b) |
| #define | WN_operator_is(x, y) (WN_operator(x)==(y)) |
| #define | WN_class(x) (ST_class(WN_st(x))) |
| #define | WN_sclass(x) (ST_sclass(WN_st(x))) |
| #define | WN_type(x) (ST_type(WN_st(x))) |
| #define | WN_has_map_id(x) (WN_map_id(x)!= -1) |
| #define | WN_block_empty(x) (WN_first(x) == NULL) |
| #define | WN_block_nonempty(x) (WN_first(x) != NULL) |
| #define | WN_IF_IS_GUARD 0x1 |
| #define | WN_Is_If_Guard(x) (WN_if_flag(x) & WN_IF_IS_GUARD) |
| #define | WN_Set_If_Guard(x) (WN_if_flag(x) |= WN_IF_IS_GUARD) |
| #define | WN_Reset_If_Guard(x) (WN_if_flag(x) &= ~(WN_IF_IS_GUARD)) |
| #define | WN_IF_IS_MPVERSION 0x2 |
| #define | WN_Is_If_MpVersion(x) (WN_if_flag(x) & WN_IF_IS_MPVERSION) |
| #define | WN_Set_If_MpVersion(x) (WN_if_flag(x) |= WN_IF_IS_MPVERSION) |
| #define | WN_Reset_If_MpVersion(x) (WN_if_flag(x) &= ~(WN_IF_IS_MPVERSION)) |
| #define | WN_LABEL_BREAK 0x1 |
| #define | WN_Label_Is_Break(x) (WN_label_flag(x) & WN_LABEL_BREAK) |
| #define | WN_Set_Label_Is_Break(x) (WN_label_flag(x) |= WN_LABEL_BREAK) |
| #define | WN_Reset_Label_Is_Break(x) (WN_label_flag(x) &= ~(WN_LABEL_BREAK)) |
| #define | WN_LOOP_INNERMOST 0x1 |
| #define | WN_LOOP_WINDDOWN_REG 0x2 |
| #define | WN_LOOP_WINDDOWN_CACHE 0x4 |
| #define | WN_LOOP_UNIMPORTANT_MISC 0x8 |
| #define | WN_LOOP_NZ_TRIP 0x10 |
| #define | WN_LOOP_SYMB_TRIP 0x20 |
| #define | WN_Loop_Innermost(x) (WN_loop_flag(x) & WN_LOOP_INNERMOST) |
| #define | WN_Set_Loop_Innermost(x) (WN_loop_flag(x) |= WN_LOOP_INNERMOST) |
| #define | WN_Reset_Loop_Innermost(x) (WN_loop_flag(x) &= ~WN_LOOP_INNERMOST) |
| #define | WN_Loop_Winddown_Reg(x) (WN_loop_flag(x) & WN_LOOP_WINDDOWN_REG) |
| #define | WN_Set_Loop_Winddown_Reg(x) (WN_loop_flag(x) |= WN_LOOP_WINDDOWN_REG) |
| #define | WN_Reset_Loop_Winddown_Reg(x) (WN_loop_flag(x) &= ~WN_LOOP_WINDDOWN_REG) |
| #define | WN_Loop_Winddown_Cache(x) (WN_loop_flag(x) & WN_LOOP_WINDDOWN_CACHE) |
| #define | WN_Set_Loop_Winddown_Cache(x) (WN_loop_flag(x) |= WN_LOOP_WINDDOWN_CACHE) |
| #define | WN_Reset_Loop_Winddown_Cache(x) (WN_loop_flag(x) &= ~WN_LOOP_WINDDOWN_CACHE) |
| #define | WN_Loop_Unimportant_Misc(x) (WN_loop_flag(x) & WN_LOOP_UNIMPORTANT_MISC) |
| #define | WN_Set_Loop_Unimportant_Misc(x) (WN_loop_flag(x) |= WN_LOOP_UNIMPORTANT_MISC) |
| #define | WN_Reset_Loop_Unimportant_Misc(x) (WN_loop_flag(x) &= ~WN_LOOP_UNIMPORTANT_MISC) |
| #define | WN_Loop_Unimportant(x) |
| #define | WN_Loop_Nz_Trip(x) (WN_loop_flag(x) & WN_LOOP_NZ_TRIP) |
| #define | WN_Set_Loop_Nz_Trip(x) (WN_loop_flag(x) |= WN_LOOP_NZ_TRIP) |
| #define | WN_Reset_Loop_Nz_Trip(x) (WN_loop_flag(x) &= ~WN_LOOP_NZ_TRIP) |
| #define | WN_Loop_Symb_Trip(x) (WN_loop_flag(x) & WN_LOOP_SYMB_TRIP) |
| #define | WN_Set_Loop_Symb_Trip(x) (WN_loop_flag(x) |= WN_LOOP_SYMB_TRIP) |
| #define | WN_Reset_Loop_Symb_Trip(x) (WN_loop_flag(x) &= ~WN_LOOP_SYMB_TRIP) |
| #define | WN_LABEL_HANDLER_BEGIN 0x2 |
| #define | WN_Label_Is_Handler_Begin(x) |
| #define | WN_Set_Label_Is_Handler_Begin(x) |
| #define | WN_Reset_Label_Is_Handler_Begin(x) |
| #define | WN_Set_IO_Library(x, y) (WN_io_flag(x) = (y)) |
| #define | WN_IO_Library(x) ((IOLIB) WN_io_flag(x)) |
| #define | WN_PARM_BY_REFERENCE 0x01 |
| #define | WN_PARM_BY_VALUE 0x02 |
| #define | WN_PARM_IN WN_PARM_BY_VALUE |
| #define | WN_PARM_OUT 0x04 |
| #define | WN_PARM_DUMMY 0x08 |
| #define | WN_PARM_READ_ONLY 0x10 |
| #define | WN_PARM_PASSED_NOT_SAVED 0x20 |
| #define | WN_PARM_NOT_EXPOSED_USE 0x40 |
| #define | WN_PARM_IS_KILLED 0x80 |
| #define | WN_Parm_By_Reference(x) (WN_parm_flag(x) & WN_PARM_BY_REFERENCE) |
| #define | WN_Set_Parm_By_Reference(x) (WN_parm_flag(x) |= WN_PARM_BY_REFERENCE) |
| #define | WN_Parm_By_Value(x) (WN_parm_flag(x) & WN_PARM_BY_VALUE) |
| #define | WN_Set_Parm_By_Value(x) (WN_parm_flag(x) |= WN_PARM_BY_VALUE) |
| #define | WN_Parm_In(x) (WN_parm_flag(x) & WN_PARM_IN) |
| #define | WN_Set_Parm_In(x) (WN_parm_flag(x) |= WN_PARM_IN) |
| #define | WN_Parm_Out(x) (WN_parm_flag(x) & WN_PARM_OUT) |
| #define | WN_Set_Parm_Out(x) (WN_parm_flag(x) |= WN_PARM_OUT) |
| #define | WN_Parm_Dummy(x) (WN_parm_flag(x) & WN_PARM_DUMMY) |
| #define | WN_Set_Parm_Dummy(x) (WN_parm_flag(x) |= WN_PARM_DUMMY) |
| #define | WN_Parm_Read_Only(x) (WN_parm_flag(x) & WN_PARM_READ_ONLY) |
| #define | WN_Set_Parm_Read_Only(x) (WN_parm_flag(x) |= WN_PARM_READ_ONLY) |
| #define | WN_Parm_Passed_Not_Saved(x) (WN_parm_flag(x) & WN_PARM_PASSED_NOT_SAVED) |
| #define | WN_Set_Parm_Passed_Not_Saved(x) (WN_parm_flag(x) |= WN_PARM_PASSED_NOT_SAVED) |
| #define | WN_Set_Parm_Not_Exposed_Use(x) (WN_parm_flag(x) |= WN_PARM_NOT_EXPOSED_USE) |
| #define | WN_Parm_Not_Exposed_Use(x) (WN_parm_flag(x) & WN_PARM_NOT_EXPOSED_USE) |
| #define | WN_Set_Parm_Is_Killed(x) (WN_parm_flag(x) |= WN_PARM_IS_KILLED) |
| #define | WN_Parm_Is_Killed(x) (WN_parm_flag(x) & WN_PARM_IS_KILLED) |
| #define | WN_CALL_NEVER_RETURN 0x01 |
| #define | WN_CALL_NON_DATA_MOD 0x02 |
| #define | WN_CALL_NON_PARM_MOD 0x04 |
| #define | WN_CALL_PARM_MOD 0x08 |
| #define | WN_CALL_NON_DATA_REF 0x10 |
| #define | WN_CALL_NON_PARM_REF 0x20 |
| #define | WN_CALL_PARM_REF 0x40 |
| #define | WN_CALL_INLINE 0x80 |
| #define | WN_CALL_DONT_INLINE 0x100 |
| #define | WN_CALL_DOES_MEM_ALLOC 0x200 |
| #define | WN_CALL_DOES_MEM_FREE 0x400 |
| #define | WN_CALL_FORTRAN_POINTER_RULE 0x800 |
| #define | WN_CALL_REPLACE_BY_JUMP 0x1000 |
| #define | WN_CALL_IS_VIRTUAL 0x2000 |
| #define | WN_CALL_CONSERVATIVE |
| #define | WN_Call_Never_Return(x) (WN_call_flag(x) & WN_CALL_NEVER_RETURN) |
| #define | WN_Set_Call_Never_Return(x) (WN_call_flag(x) |= WN_CALL_NEVER_RETURN) |
| #define | WN_Reset_Call_Never_Return(x) (WN_call_flag(x) &= ~WN_CALL_NEVER_RETURN) |
| #define | WN_Call_Non_Data_Mod(x) (WN_call_flag(x) & WN_CALL_NON_DATA_MOD) |
| #define | WN_Set_Call_Non_Data_Mod(x) (WN_call_flag(x) |= WN_CALL_NON_DATA_MOD) |
| #define | WN_Reset_Call_Non_Data_Mod(x) (WN_call_flag(x) &= ~WN_CALL_NON_DATA_MOD) |
| #define | WN_Call_Non_Data_Ref(x) (WN_call_flag(x) & WN_CALL_NON_DATA_REF) |
| #define | WN_Set_Call_Non_Data_Ref(x) (WN_call_flag(x) |= WN_CALL_NON_DATA_REF) |
| #define | WN_Reset_Call_Non_Data_Ref(x) (WN_call_flag(x) &= ~WN_CALL_NON_DATA_REF) |
| #define | WN_Call_Non_Parm_Mod(x) (WN_call_flag(x) & WN_CALL_NON_PARM_MOD) |
| #define | WN_Set_Call_Non_Parm_Mod(x) (WN_call_flag(x) |= WN_CALL_NON_PARM_MOD) |
| #define | WN_Reset_Call_Non_Parm_Mod(x) (WN_call_flag(x) &= ~WN_CALL_NON_PARM_MOD) |
| #define | WN_Call_Non_Parm_Ref(x) (WN_call_flag(x) & WN_CALL_NON_PARM_REF) |
| #define | WN_Set_Call_Non_Parm_Ref(x) (WN_call_flag(x) |= WN_CALL_NON_PARM_REF) |
| #define | WN_Reset_Call_Non_Parm_Ref(x) (WN_call_flag(x) &= ~WN_CALL_NON_PARM_REF) |
| #define | WN_Call_Parm_Mod(x) (WN_call_flag(x) & WN_CALL_PARM_MOD) |
| #define | WN_Set_Call_Parm_Mod(x) (WN_call_flag(x) |= WN_CALL_PARM_MOD) |
| #define | WN_Reset_Call_Parm_Mod(x) (WN_call_flag(x) &= ~WN_CALL_PARM_MOD) |
| #define | WN_Call_Parm_Ref(x) (WN_call_flag(x) & WN_CALL_PARM_REF) |
| #define | WN_Set_Call_Parm_Ref(x) (WN_call_flag(x) |= WN_CALL_PARM_REF) |
| #define | WN_Reset_Call_Parm_Ref(x) (WN_call_flag(x) &= ~WN_CALL_PARM_REF) |
| #define | WN_Call_Inline(x) (WN_call_flag(x) & WN_CALL_INLINE) |
| #define | WN_Set_Call_Inline(x) (WN_call_flag(x) |= WN_CALL_INLINE) |
| #define | WN_Reset_Call_Inline(x) (WN_call_flag(x) &= ~WN_CALL_INLINE) |
| #define | WN_Call_Dont_Inline(x) (WN_call_flag(x) & WN_CALL_DONT_INLINE) |
| #define | WN_Set_Call_Dont_Inline(x) (WN_call_flag(x) |= WN_CALL_DONT_INLINE) |
| #define | WN_Reset_Call_Dont_Inline(x) (WN_call_flag(x) &= ~WN_CALL_DONT_INLINE) |
| #define | WN_Call_Does_Mem_Alloc(x) (WN_call_flag(x) & WN_CALL_DOES_MEM_ALLOC) |
| #define | WN_Set_Call_Does_Mem_Alloc(x) (WN_call_flag(x) |= WN_CALL_DOES_MEM_ALLOC) |
| #define | WN_Reset_Call_Does_Mem_Alloc(x) (WN_call_flag(x) &= ~WN_CALL_DOES_MEM_ALLOC) |
| #define | WN_Call_Does_Mem_Free(x) (WN_call_flag(x) & WN_CALL_DOES_MEM_FREE) |
| #define | WN_Set_Call_Does_Mem_Free(x) (WN_call_flag(x) |= WN_CALL_DOES_MEM_FREE) |
| #define | WN_Reset_Call_Does_Mem_Free(x) (WN_call_flag(x) &= ~WN_CALL_DOES_MEM_FREE) |
| #define | WN_Call_Fortran_Pointer_Rule(x) (WN_call_flag(x) & WN_CALL_FORTRAN_POINTER_RULE) |
| #define | WN_Set_Call_Fortran_Pointer_Rule(x) (WN_call_flag(x) |= WN_CALL_FORTRAN_POINTER_RULE) |
| #define | WN_Reset_Call_Fortran_Pointer_Rule(x) (WN_call_flag(x) &= ~WN_CALL_FORTRAN_POINTER_RULE) |
| #define | WN_Call_Replace_By_Jump(x) (WN_call_flag(x) & WN_CALL_REPLACE_BY_JUMP) |
| #define | WN_Set_Call_Replace_By_Jump(x) (WN_call_flag(x) |= WN_CALL_REPLACE_BY_JUMP) |
| #define | WN_Reset_Call_Replace_By_Jump(x) (WN_call_flag(x) &= ~WN_CALL_REPLACE_BY_JUMP) |
| #define | WN_Set_Call_Default_Flags(x) (WN_call_flag(x) |= WN_CALL_CONSERVATIVE) |
| #define | WN_Call_No_Side_Effect(x) ((WN_call_flag(x) & (WN_CALL_NON_DATA_MOD | WN_CALL_NON_PARM_MOD | WN_CALL_PARM_MOD)) == 0) |
| #define | WN_Call_Pure(x) ((WN_call_flag(x) & (WN_CALL_NON_DATA_MOD | WN_CALL_NON_PARM_MOD | WN_CALL_PARM_MOD | WN_CALL_NON_DATA_REF | WN_CALL_NON_PARM_REF)) == 0) |
| #define | WN_Call_Is_Virtual(x) (WN_call_flag(x) & WN_CALL_IS_VIRTUAL) |
| #define | WN_Set_Call_Is_Virtual(x) (WN_call_flag(x) |= WN_CALL_IS_VIRTUAL) |
| #define | WN_Reset_Call_Is_Virtual(x) (WN_call_flag(x) &= ~WN_CALL_IS_VIRTUAL) |
| #define | WN_ASM_VOLATILE 0x0001 |
| #define | WN_ASM_CLOBBERS_MEM 0x0002 |
| #define | WN_ASM_CLOBBERS_CC 0x0004 |
| #define | WN_Asm_Volatile(x) (WN_asm_flag(x) & WN_ASM_VOLATILE) |
| #define | WN_Set_Asm_Volatile(x) (WN_asm_flag(x) |= WN_ASM_VOLATILE) |
| #define | WN_Reset_Asm_Volatile(x) (WN_asm_flag(x) &= ~WN_ASM_VOLATILE) |
| #define | WN_Asm_Clobbers_Mem(x) (WN_asm_flag(x) & WN_ASM_CLOBBERS_MEM) |
| #define | WN_Set_Asm_Clobbers_Mem(x) (WN_asm_flag(x) |= WN_ASM_CLOBBERS_MEM) |
| #define | WN_Reset_Asm_Clobbers_Mem(x) (WN_asm_flag(x) &= ~WN_ASM_CLOBBERS_MEM) |
| #define | WN_Asm_Clobbers_Cc(x) (WN_asm_flag(x) & WN_ASM_CLOBBERS_CC) |
| #define | WN_Set_Asm_Clobbers_Cc(x) (WN_asm_flag(x) |= WN_ASM_CLOBBERS_CC) |
| #define | WN_Reset_Asm_Clobbers_Cc(x) (WN_asm_flag(x) &= ~WN_ASM_CLOBBERS_CC) |
| #define | PF_GET_READ(flag) (((~(flag)) >> 24) & 0x1) |
| #define | PF_GET_WRITE(flag) (((flag) >> 24) & 0x1) |
| #define | PF_GET_STRIDE_1L(flag) ((flag) & 0xff) |
| #define | PF_GET_STRIDE_2L(flag) (((flag) >> 8) & 0xff) |
| #define | PF_GET_CONFIDENCE(flag) (((flag) >> 28) & 0xf) |
| #define | PF_GET_MANUAL(flag) (((flag) >> 25) & 0x1) |
| #define | PF_SET_READ(flag) flag &= 0xfeffffff |
| #define | PF_SET_WRITE(flag) flag |= 0x01000000 |
| #define | PF_SET_STRIDE_1L(flag, x) flag = (((flag)&0xffffff00) | ((x)&0xff)) |
| #define | PF_SET_STRIDE_2L(flag, x) flag = (((flag)&0xffff00ff) | ((x)&0xff)<<8) |
| #define | PF_SET_CONFIDENCE(flag, x) flag = (((flag)&0x0fffffff) | ((x)&0xf)<<28) |
| #define | PF_SET_MANUAL(flag) flag |= 0x02000000 |
| #define | PF_UNSET_MANUAL(flag) flag &= 0xfdffffff |
| #define | WN_pf_read(wn) (((~(WN_prefetch_flag(wn))) >> 24) & 0x1) |
| #define | WN_pf_write(wn) (((WN_prefetch_flag(wn)) >> 24) & 0x1) |
| #define | WN_pf_stride_1L(wn) ((WN_prefetch_flag(wn)) & 0xff) |
| #define | WN_pf_stride_2L(wn) (((WN_prefetch_flag(wn)) >> 8) & 0xff) |
| #define | WN_pf_confidence(wn) (((WN_prefetch_flag(wn)) >> 28) & 0xf) |
| #define | WN_pf_manual(wn) (((WN_prefetch_flag(wn)) >> 25) & 0x1) |
| #define | WN_pf_set_read(wn) WN_prefetch_flag(wn) &= 0xfeffffff |
| #define | WN_pf_set_write(wn) WN_prefetch_flag(wn) |= 0x01000000 |
| #define | WN_pf_set_stride_1L(wn, x) WN_prefetch_flag(wn) = (((WN_prefetch_flag(wn))&0xffffff00) | ((x)&0xff)) |
| #define | WN_pf_set_stride_2L(wn, x) WN_prefetch_flag(wn) = (((WN_prefetch_flag(wn))&0xffff00ff) | ((x)&0xff)<<8) |
| #define | WN_pf_set_confidence(wn, x) WN_prefetch_flag(wn) = (((WN_prefetch_flag(wn))&0x0fffffff) | ((x)&0xf)<<28) |
| #define | WN_pf_set_manual(wn) WN_prefetch_flag(wn) |= 0x02000000 |
| #define | WN_pf_unset_manual(wn) WN_prefetch_flag(wn) &= 0xfdffffff |
Typedefs | |
| typedef INT32 | WN_OFFSET |
| typedef INT64 | WN_ESIZE |
| typedef INT32 | WN_MAP_ID |
Enumerations | |
| enum | REGION_KIND { REGION_KIND_PRAGMA = 0x0, REGION_KIND_FUNC_ENTRY = 0x1, REGION_KIND_LOOP = 0x2, REGION_KIND_OLIMIT = 0x3, REGION_KIND_MP = 0x4, REGION_KIND_RPI = 0x5, REGION_KIND_COLD = 0x6, REGION_KIND_SWP = 0x7, REGION_KIND_EH = 0x8, REGION_KIND_TRY = 0x8, REGION_KIND_CLEANUP = 0x9, REGION_KIND_EXC_SPEC = 0xa, REGION_KIND_MASK = 0xb, REGION_KIND_GUARD = 0xc, REGION_KIND_NULL_CLEANUP = 0xd, REGION_KIND_PRAGMA = 0x0, REGION_KIND_FUNC_ENTRY = 0x1, REGION_KIND_LOOP = 0x2, REGION_KIND_OLIMIT = 0x3, REGION_KIND_MP = 0x4, REGION_KIND_RPI = 0x5, REGION_KIND_COLD = 0x6, REGION_KIND_SWP = 0x7, REGION_KIND_EH = 0x8, REGION_KIND_TRY = 0x8, REGION_KIND_CLEANUP = 0x9, REGION_KIND_EXC_SPEC = 0xa, REGION_KIND_MASK = 0xb, REGION_KIND_GUARD = 0xc, REGION_KIND_NULL_CLEANUP = 0xd } |
Functions/Subroutines | |
| WN_OFFSET | WN_load_offset (const WN *wn) |
| WN_OFFSET & | WN_load_offset (WN *wn) |
| WN_OFFSET | WN_lda_offset (const WN *wn) |
| WN_OFFSET & | WN_lda_offset (WN *wn) |
| WN_OFFSET | WN_store_offset (const WN *wn) |
| WN_OFFSET & | WN_store_offset (WN *wn) |
| WN_OFFSET | WN_idname_offset (const WN *wn) |
| WN_OFFSET & | WN_idname_offset (WN *wn) |
| WN_OFFSET | WN_offset (const WN *wn) |
| WN_OFFSET & | WN_offset (WN *wn) |
| INT32 | WN_num_entries (const WN *wn) |
| INT32 & | WN_num_entries (WN *wn) |
| INT16 | WN_cvtl_bits (const WN *wn) |
| INT16 & | WN_cvtl_bits (WN *wn) |
| INT32 | WN_label_number (const WN *wn) |
| INT32 & | WN_label_number (WN *wn) |
| UINT32 | WN_call_flag (const WN *wn) |
| UINT32 & | WN_call_flag (WN *wn) |
| UINT32 | WN_if_flag (const WN *wn) |
| UINT32 & | WN_if_flag (WN *wn) |
| UINT32 | WN_io_flag (const WN *wn) |
| UINT32 & | WN_io_flag (WN *wn) |
| UINT32 | WN_asm_flag (const WN *wn) |
| UINT32 & | WN_asm_flag (WN *wn) |
| UINT32 | WN_label_level (const WN *wn) |
| UINT32 & | WN_label_level (WN *wn) |
| mUINT16 | WN_loop_trip_est (const WN *wn) |
| mUINT16 & | WN_loop_trip_est (WN *wn) |
| mUINT16 | WN_loop_depth (const WN *wn) |
| mUINT16 & | WN_loop_depth (WN *wn) |
| mUINT16 | WN_pragma_flags (const WN *wn) |
| mUINT16 & | WN_pragma_flags (WN *wn) |
| mUINT16 | WN_pragma (const WN *wn) |
| mUINT16 & | WN_pragma (WN *wn) |
| char * | WN_pragma_asm_constraint (const WN *wn) |
| PREG_NUM | WN_pragma_asm_copyout_preg (const WN *wn) |
| void | WN_set_pragma_asm_copyout_preg (WN *wn, PREG_NUM r) |
| UINT32 | WN_pragma_asm_opnd_num (const WN *wn) |
| void | WN_set_pragma_asm_opnd_num (WN *wn, UINT32 i) |
| REGION_KIND | WN_region_kind (const WN *wn) |
| void | WN_set_region_kind (WN *wn, REGION_KIND k) |
| mUINT32 | WN_region_id (const WN *wn) |
| void | WN_set_region_id (WN *wn, mUINT32 i) |
| ST_IDX | WN_st_idx (const WN *wn) |
| ST_IDX & | WN_st_idx (WN *wn) |
| INTRINSIC | WN_intrinsic (const WN *wn) |
| INTRINSIC & | WN_intrinsic (WN *wn) |
| IOSTATEMENT | WN_io_statement (const WN *wn) |
| IOSTATEMENT & | WN_io_statement (WN *wn) |
| IOITEM | WN_io_item (const WN *wn) |
| IOITEM & | WN_io_item (WN *wn) |
| UINT32 | WN_prefetch_flag (const WN *wn) |
| UINT32 & | WN_prefetch_flag (WN *wn) |
| UINT32 | WN_loop_flag (const WN *wn) |
| UINT32 & | WN_loop_flag (WN *wn) |
| INT32 | WN_last_label (const WN *wn) |
| INT32 & | WN_last_label (WN *wn) |
| INITO_IDX | WN_ereg_supp (const WN *wn) |
| INITO_IDX & | WN_ereg_supp (WN *wn) |
| WN_ESIZE | WN_element_size (const WN *wn) |
| WN_ESIZE & | WN_element_size (WN *wn) |
| OPERATOR | WN_operator (const WN *wn) |
| void | WN_set_operator (WN *wn, OPERATOR opr) |
| TYPE_ID | WN_rtype (const WN *wn) |
| void | WN_set_rtype (WN *wn, TYPE_ID ty) |
| INT | WN_kid_count (const WN *wn) |
| void | WN_set_kid_count (WN *wn, UINT n) |
| UINT32 | WN_field_id (const WN *wn) |
| void | WN_set_field_id (WN *wn, UINT n) |
| UINT | WN_bit_offset (const WN *wn) |
| UINT | WN_bit_size (const WN *wn) |
| void | WN_set_bit_offset_size (WN *wn, UINT ofst, UINT siz) |
| TYPE_ID | WN_desc (const WN *wn) |
| void | WN_set_desc (WN *wn, TYPE_ID ty) |
| INT32 | WN_map_id (const WN *wn) |
| void | WN_set_map_id (WN *wn, INT32 m) |
| WN * | WN_kid (const WN *wn, int i) |
| WN *& | WN_kid (WN *wn, int i) |
| WN * | WN_kid0 (const WN *wn) |
| WN *& | WN_kid0 (WN *wn) |
| WN * | WN_kid1 (const WN *wn) |
| WN *& | WN_kid1 (WN *wn) |
| WN * | WN_kid2 (const WN *wn) |
| WN *& | WN_kid2 (WN *wn) |
| WN * | WN_kid3 (const WN *wn) |
| WN *& | WN_kid3 (WN *wn) |
| INT64 | WN_const_val (const WN *wn) |
| INT64 & | WN_const_val (WN *wn) |
| UINT32 | WN_label_flag (const WN *wn) |
| UINT32 & | WN_label_flag (WN *wn) |
| WN * | WN_first (const WN *wn) |
| WN *& | WN_first (WN *wn) |
| WN * | WN_last (const WN *wn) |
| WN *& | WN_last (WN *wn) |
| UINT32 | WN_asm_num_inputs (const WN *wn) |
| UINT32 & | WN_asm_num_inputs (WN *wn) |
| UINT32 | WN_asm_opnd_num (const WN *wn) |
| UINT32 & | WN_asm_opnd_num (WN *wn) |
| UINT32 | WN_asm_num_clobbers (const WN *wn) |
| UINT32 & | WN_asm_num_clobbers (WN *wn) |
| INT64 | WN_pragma_arg64 (const WN *wn) |
| INT64 & | WN_pragma_arg64 (WN *wn) |
| INT32 | WN_pragma_arg1 (const WN *wn) |
| INT32 & | WN_pragma_arg1 (WN *wn) |
| INT32 | WN_pragma_arg2 (const WN *wn) |
| INT32 & | WN_pragma_arg2 (WN *wn) |
| mINT8 | WN_pragma_distr_type (const WN *wn) |
| mINT8 & | WN_pragma_distr_type (WN *wn) |
| mINT8 | WN_pragma_index (const WN *wn) |
| mINT8 & | WN_pragma_index (WN *wn) |
| INT32 | WN_pragma_preg (const WN *wn) |
| INT32 & | WN_pragma_preg (WN *wn) |
| void | WN_Copy_u1u2 (WN *dst, const WN *src) |
| void | WN_Copy_u3 (WN *dst, const WN *src) |
| OPCODE | WN_opcode (const WN *wn) |
| void | WN_set_opcode (WN *wn, OPCODE opc) |
| UINTPS | WN_offset_in_STMT_WN (const WN *x) |
| STMT_WN * | WN_cast_WN_to_STMT_WN (const WN *x) |
| WN * | WN_prev (const WN *wn) |
| WN *& | WN_prev (WN *wn) |
| WN * | WN_next (const WN *wn) |
| WN *& | WN_next (WN *wn) |
| mUINT64 | WN_linenum (const WN *wn) |
| mUINT64 & | WN_linenum (WN *wn) |
| WN * | WN_prev_free (const STMT_WN *stmt_wn) |
| WN *& | WN_prev_free (STMT_WN *stmt_wn) |
| WN & | WN_real_fields (STMT_WN *stmt_wn) |
| ST * | WN_st (const WN *x) |
| char * | WN_asm_string (const WN *wn) |
| char * | WN_asm_input_constraint (const WN *wn) |
| TCON & | WN_val (const WN *x) |
| TYPE_ID | WN_val_type (const WN *x) |
| TY_IDX | WN_ty (const WN *wn) |
| void | WN_set_ty (WN *wn, TY_IDX ty) |
| TY_IDX | WN_load_addr_ty (const WN *wn) |
| void | WN_set_load_addr_ty (WN *wn, TY_IDX ty) |
| UINT32 | WN_flag (const WN *wn) |
| void | WN_set_flag (WN *wn, UINT32 flag) |
| void * | WN_StartAddress (WN *wn) |
| INT32 | WN_Size (WN *wn) |
| void | WN_Set_Linenum (WN *wn, INT64 ln) |
| INT64 | WN_Get_Linenum (const WN *wn) |
| BOOL | WN_Is_Volatile_Mem (const WN *wn) |
| mINT16 | WN_num_actuals (const WN *wn) |
| #define MAX_FIELD_ID 0x3ffe |
Intermediate Language Tree Nodes --------------------------------
Description:
This is the basic data structure that all phases of the compiler use to represent programs. It is used to represent expressions, leaves, statments (the side-effecting roots of expression trees commonly called "stats" in other compilers), and also units of hierarchical control flow such as do loops and if statements.
Reserved prefix:
WN for tree nodes
Exported types:
A tree node. Every tree node contains the following fields:
OPCODE opcode
What kind of tree node is this? All information common to nodes of a particular kind is derived from this. For example, we could tell we were looking at a 32 bit multiply by looking at its opcode. Because multiplies are known to have two operands, we know that this node has two operands.
mINT16 kid_count
For every node except OPR_BLOCK, this gives the number of kids of the node. For OPR_BLOCK, the value of this field is undefined. This field is zero for leaf nodes.
Depending on the type of the opcode field, one or more of the following fields is present:
For non-leaf expressions excluding OPR_BLOCK:
WN *kid(i)
Refers to the 'i'th kid
WN *kid0
Refers to the '0'th kid
WN *kid1
Refers to the first kid
WN *kid2
Refers to the second kid
WN *kid3
Refers to the third kid
For OPR_BLOCK:
WN *first
First element of the list of WNs or NULL if the list is empty
WN *last
Last element of the list of WNs or NULL if the list is empty
For all statements:
WN *next If a staement is a child of a OPR_BLOCK, this points to the next statement under the OPR_BLOCK. Otherwise, this is NULL.
WN *prev If a staement is a child of a OPR_BLOCK, this points to the previous statement under the OPR_BLOCK. Otherwise, this is NULL.
For all loads
WN_OFFSET load_offset
A constant offset. offset can also be used (instead of load_offset), but it might be less efficient.
For OPR_LDA
WN_OFFSET lda_offset
A constant offset. offset can also be used (instead of lda_offset), but it might be less efficient.
For all stores
WN_OFFSET store_offset
A constant offset. offset can also be used (instead of store_offset), but it might be less efficient.
For OPR_IDNAME
WN_OFFSET idname_offset
A constant offset. offset can also be used (instead of idname_offset), but it might be less efficient.
For OPR_LABEL, OPR_TRUEBR, OPR_FALSEBR, OPR_GOTO
INT32 label_number
For OPR_LABEL, OPC_PREFETCH, OPC_PREFETCHX OPR_INTRINSIC_CALL and OPR_INTRINSIC_OP
UINT32 flag
For OPR_INTRINSIC_CALL, OPR_INTRINSIC_OP, OPR_IO and OPR_IO_ITEM
INTRINSIC intrinsic
For OPR_INTCONST, OPR_PRAGMA
INT64 const_val
A constant offset.
For OPR_ILOAD, OPR_MLOAD, OPR_ILOADX, OPR_LDID, OPR_ICALL, OPR_ISTORE,OPR_MSTORE,OPR_ISTOREX,OPR_STID,OPR_TAS, OPR_IO_ITEM
struct ty *WN_ty(const WN *wn)
The high level type. This is a function To set the type enter WN_set_ty(WN *wn, TY *ty)
FOR OPR_ILOAD, OPR_ILOADX
struct ty *WN_load_addr_ty
For OPR_CVTL
INT16 cvtl_bits
The number of bits.
For OPR_LDID, OPR_LDA, OPR_IDNAME, OPR_STID, OPR_GOTO, OPR_ALTENOPRY, OPR_LABEL, OPR_FUNC_ENOPRY, OPR_CALL, OPR_CONST, OPR_PICCALL:
A symbol table index. For the load and store operators, this is the symbol being loaded or stored. For OPR_GOTO this is the name of the label if the label is user defined and null otherwise. For OPR_FUNC_ENTRY and OPR_CALL this is the name of the function. For OPR_CONST, this points to the value of the literal.
For OPR_COMP_GOTO:
INT32 num_entries
How many entries in the computed goto table. A region created after structured control flow is lowered will also need a branch table to keep track of all the possible exits.
For OPR_ARRAY
INT32 num_dim
How many dimensions are in this array.
WN_ESIZE element_size
How big (in bytes) is each element
For OPR_FUNC_ENTRY:
WN *next_func, *prev_func
The next and previous function in a list of functions
In addition to the above, synonyms are provided for the field names of various types of tree nodes. These provide convenient and self documenting names. Please add to this list as appropriate:
For OPR_FUNC_ENTRY:
ST entry_name The name of the entry
WN *formal(i) The 'i'-th formal parameter
INT16 num_formals The number of formal parameters
WN *func_pragmas List of pragmas for the function
WN *func_varrefs List of uplevel var refs for the function
WN *func_body The OPR_BLOCK that represents all the code in the body
WN *entry_first,entry_last The first and last statement in the OPR_BLOCK that represents all the code in the body. This is aliased to indirect through func_body
For OPR_[I]CALL:
WN *actual(i) The 'i'-th actual parameter
INT16 num_actuals The number of actual parameters
For OPR_DO_LOOP:
WN *index WN *start WN *end WN *step WN *do_body
For OPR_DO_WHILE:
For OPR_WHILE_DO:
For OPR_IF
For OPR_REGION:
WN *region_body UINT32 flag Regions use the call_flag to track compilation level info
For OPR_ARRAY
WN *array_index(i) The i'th indexing dimension (i starts at 0)
WN *array_dim(i) The i'th dimension size (i starts at 0)
WN *array_base The base of the array.
WN_OFFSET
This is a signed integer type used in the offset fields of various WNs mentioned above plus in OPC_PRAGMA.
Exported functions:
INT32 WN_Size( WN *wn )
Return the size in bytes of this wn structure
void *WN_StartAddress(WN *wn)
Return the starting address of wn This is not necessarily &wn as we grow wns backwards to minimize size
WN_Is_If_Guard(WN *if_wn) is the if statement a one-trip guard for a do loop WN_Set_If_Guard(WN *if_wn) the if statement is a one-trip guard for a do loop WN_Reset_If_Guard(WN *if_wn) the if statement is not a one-trip guard for a do loop
WN_Label_Is_Break(x) is the label the label for a break from a case statement WN_Set_Label_Is_Break(x) the label is the label for a break from a case statement WN_Reset_Label_Is_Break(x) the label is not the label for a break from a case statement
WN_Is_Volatile_Mem(const WN *wn) Is <wn> a reference to a volatile memory location?
| #define WN_Asm_Clobbers_Cc | ( | x | ) | (WN_asm_flag(x) & WN_ASM_CLOBBERS_CC) |
| #define WN_Asm_Clobbers_Mem | ( | x | ) | (WN_asm_flag(x) & WN_ASM_CLOBBERS_MEM) |
| #define WN_Asm_Volatile | ( | x | ) | (WN_asm_flag(x) & WN_ASM_VOLATILE) |
| #define WN_CALL_CONSERVATIVE |
Value:
| #define WN_Call_Does_Mem_Alloc | ( | x | ) | (WN_call_flag(x) & WN_CALL_DOES_MEM_ALLOC) |
| #define WN_Call_Does_Mem_Free | ( | x | ) | (WN_call_flag(x) & WN_CALL_DOES_MEM_FREE) |
| #define WN_Call_Dont_Inline | ( | x | ) | (WN_call_flag(x) & WN_CALL_DONT_INLINE) |
| #define WN_Call_Fortran_Pointer_Rule | ( | x | ) | (WN_call_flag(x) & WN_CALL_FORTRAN_POINTER_RULE) |
| #define WN_Call_Inline | ( | x | ) | (WN_call_flag(x) & WN_CALL_INLINE) |
| #define WN_Call_Is_Virtual | ( | x | ) | (WN_call_flag(x) & WN_CALL_IS_VIRTUAL) |
| #define WN_Call_Never_Return | ( | x | ) | (WN_call_flag(x) & WN_CALL_NEVER_RETURN) |
| #define WN_Call_No_Side_Effect | ( | x | ) | ((WN_call_flag(x) & (WN_CALL_NON_DATA_MOD | WN_CALL_NON_PARM_MOD | WN_CALL_PARM_MOD)) == 0) |
| #define WN_Call_Non_Data_Mod | ( | x | ) | (WN_call_flag(x) & WN_CALL_NON_DATA_MOD) |
| #define WN_Call_Non_Data_Ref | ( | x | ) | (WN_call_flag(x) & WN_CALL_NON_DATA_REF) |
| #define WN_Call_Non_Parm_Mod | ( | x | ) | (WN_call_flag(x) & WN_CALL_NON_PARM_MOD) |
| #define WN_Call_Non_Parm_Ref | ( | x | ) | (WN_call_flag(x) & WN_CALL_NON_PARM_REF) |
| #define WN_Call_Parm_Mod | ( | x | ) | (WN_call_flag(x) & WN_CALL_PARM_MOD) |
| #define WN_Call_Parm_Ref | ( | x | ) | (WN_call_flag(x) & WN_CALL_PARM_REF) |
| #define WN_Call_Pure | ( | x | ) | ((WN_call_flag(x) & (WN_CALL_NON_DATA_MOD | WN_CALL_NON_PARM_MOD | WN_CALL_PARM_MOD | WN_CALL_NON_DATA_REF | WN_CALL_NON_PARM_REF)) == 0) |
| #define WN_Call_Replace_By_Jump | ( | x | ) | (WN_call_flag(x) & WN_CALL_REPLACE_BY_JUMP) |
| #define WN_do_loop_info | ( | x | ) | (WN_kid_count(x)>5 ? WN_kid((x),5) : NULL) |
| #define WN_else_is_empty | ( | x | ) | (WN_first(WN_else(x)) == NULL) |
| #define WN_func_pragmas | ( | x | ) | WN_kid((x),WN_kid_count(x)-3) |
| #define WN_func_varrefs | ( | x | ) | WN_kid((x),WN_kid_count(x)-2) |
| #define WN_has_sym | ( | x | ) | (OPERATOR_has_sym(WN_operator(x))) |
| #define WN_Is_If_Guard | ( | x | ) | (WN_if_flag(x) & WN_IF_IS_GUARD) |
| #define WN_Is_If_MpVersion | ( | x | ) | (WN_if_flag(x) & WN_IF_IS_MPVERSION) |
| #define WN_Label_Is_Break | ( | x | ) | (WN_label_flag(x) & WN_LABEL_BREAK) |
| #define WN_Label_Is_Handler_Begin | ( | x | ) |
| #define WN_label_loop_info | ( | x | ) | (WN_kid_count(x)>0 ? WN_kid((x),0) : NULL) |
| #define WN_loop_induction | ( | x | ) | (WN_kid_count(x)>0 ? WN_kid((x),0) : NULL) |
| #define WN_Loop_Innermost | ( | x | ) | (WN_loop_flag(x) & WN_LOOP_INNERMOST) |
| #define WN_Loop_Nz_Trip | ( | x | ) | (WN_loop_flag(x) & WN_LOOP_NZ_TRIP) |
| #define WN_Loop_Symb_Trip | ( | x | ) | (WN_loop_flag(x) & WN_LOOP_SYMB_TRIP) |
| #define WN_loop_trip | ( | x | ) | (WN_kid_count(x)>1 ? WN_kid((x),1) : NULL) |
| #define WN_Loop_Unimportant | ( | x | ) |
Value:
| #define WN_Loop_Unimportant_Misc | ( | x | ) | (WN_loop_flag(x) & WN_LOOP_UNIMPORTANT_MISC) |
| #define WN_Loop_Winddown_Cache | ( | x | ) | (WN_loop_flag(x) & WN_LOOP_WINDDOWN_CACHE) |
| #define WN_Loop_Winddown_Reg | ( | x | ) | (WN_loop_flag(x) & WN_LOOP_WINDDOWN_REG) |
| #define WN_Parm_By_Reference | ( | x | ) | (WN_parm_flag(x) & WN_PARM_BY_REFERENCE) |
| #define WN_Parm_By_Value | ( | x | ) | (WN_parm_flag(x) & WN_PARM_BY_VALUE) |
| #define WN_Parm_Dummy | ( | x | ) | (WN_parm_flag(x) & WN_PARM_DUMMY) |
| #define WN_Parm_Is_Killed | ( | x | ) | (WN_parm_flag(x) & WN_PARM_IS_KILLED) |
| #define WN_Parm_Not_Exposed_Use | ( | x | ) | (WN_parm_flag(x) & WN_PARM_NOT_EXPOSED_USE) |
| #define WN_Parm_Out | ( | x | ) | (WN_parm_flag(x) & WN_PARM_OUT) |
| #define WN_Parm_Passed_Not_Saved | ( | x | ) | (WN_parm_flag(x) & WN_PARM_PASSED_NOT_SAVED) |
| #define WN_Parm_Read_Only | ( | x | ) | (WN_parm_flag(x) & WN_PARM_READ_ONLY) |
| #define WN_pragma_compiler_generated | ( | x | ) | ((WN_pragma_flags(x))&WN_PRAGMA_COMPILER_GENERATED) |
| #define WN_pragma_omp | ( | x | ) | ((WN_pragma_flags(x)) & WN_PRAGMA_OMP) |
| #define WN_region_is_EH | ( | x | ) | (WN_region_kind(x) & REGION_KIND_EH) |
| #define WN_Reset_Asm_Clobbers_Cc | ( | x | ) | (WN_asm_flag(x) &= ~WN_ASM_CLOBBERS_CC) |
| #define WN_Reset_Asm_Clobbers_Mem | ( | x | ) | (WN_asm_flag(x) &= ~WN_ASM_CLOBBERS_MEM) |
| #define WN_Reset_Asm_Volatile | ( | x | ) | (WN_asm_flag(x) &= ~WN_ASM_VOLATILE) |
| #define WN_Reset_Call_Does_Mem_Alloc | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_DOES_MEM_ALLOC) |
| #define WN_Reset_Call_Does_Mem_Free | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_DOES_MEM_FREE) |
| #define WN_Reset_Call_Dont_Inline | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_DONT_INLINE) |
| #define WN_Reset_Call_Fortran_Pointer_Rule | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_FORTRAN_POINTER_RULE) |
| #define WN_Reset_Call_Inline | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_INLINE) |
| #define WN_Reset_Call_Is_Virtual | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_IS_VIRTUAL) |
| #define WN_Reset_Call_Never_Return | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_NEVER_RETURN) |
| #define WN_Reset_Call_Non_Data_Mod | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_NON_DATA_MOD) |
| #define WN_Reset_Call_Non_Data_Ref | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_NON_DATA_REF) |
| #define WN_Reset_Call_Non_Parm_Mod | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_NON_PARM_MOD) |
| #define WN_Reset_Call_Non_Parm_Ref | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_NON_PARM_REF) |
| #define WN_Reset_Call_Parm_Mod | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_PARM_MOD) |
| #define WN_Reset_Call_Parm_Ref | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_PARM_REF) |
| #define WN_Reset_Call_Replace_By_Jump | ( | x | ) | (WN_call_flag(x) &= ~WN_CALL_REPLACE_BY_JUMP) |
| #define WN_Reset_If_Guard | ( | x | ) | (WN_if_flag(x) &= ~(WN_IF_IS_GUARD)) |
| #define WN_Reset_If_MpVersion | ( | x | ) | (WN_if_flag(x) &= ~(WN_IF_IS_MPVERSION)) |
| #define WN_Reset_Label_Is_Break | ( | x | ) | (WN_label_flag(x) &= ~(WN_LABEL_BREAK)) |
| #define WN_Reset_Label_Is_Handler_Begin | ( | x | ) |
| #define WN_Reset_Loop_Innermost | ( | x | ) | (WN_loop_flag(x) &= ~WN_LOOP_INNERMOST) |
| #define WN_Reset_Loop_Nz_Trip | ( | x | ) | (WN_loop_flag(x) &= ~WN_LOOP_NZ_TRIP) |
| #define WN_Reset_Loop_Symb_Trip | ( | x | ) | (WN_loop_flag(x) &= ~WN_LOOP_SYMB_TRIP) |
| #define WN_Reset_Loop_Unimportant_Misc | ( | x | ) | (WN_loop_flag(x) &= ~WN_LOOP_UNIMPORTANT_MISC) |
| #define WN_Reset_Loop_Winddown_Cache | ( | x | ) | (WN_loop_flag(x) &= ~WN_LOOP_WINDDOWN_CACHE) |
| #define WN_Reset_Loop_Winddown_Reg | ( | x | ) | (WN_loop_flag(x) &= ~WN_LOOP_WINDDOWN_REG) |
| #define WN_reset_pragma_omp | ( | x | ) | ((WN_pragma_flags(x)) &= ~(WN_PRAGMA_OMP)) |
| #define WN_Set_Asm_Clobbers_Cc | ( | x | ) | (WN_asm_flag(x) |= WN_ASM_CLOBBERS_CC) |
| #define WN_Set_Asm_Clobbers_Mem | ( | x | ) | (WN_asm_flag(x) |= WN_ASM_CLOBBERS_MEM) |
| #define WN_Set_Asm_Volatile | ( | x | ) | (WN_asm_flag(x) |= WN_ASM_VOLATILE) |
| #define WN_Set_Call_Default_Flags | ( | x | ) | (WN_call_flag(x) |= WN_CALL_CONSERVATIVE) |
| #define WN_Set_Call_Does_Mem_Alloc | ( | x | ) | (WN_call_flag(x) |= WN_CALL_DOES_MEM_ALLOC) |
| #define WN_Set_Call_Does_Mem_Free | ( | x | ) | (WN_call_flag(x) |= WN_CALL_DOES_MEM_FREE) |
| #define WN_Set_Call_Dont_Inline | ( | x | ) | (WN_call_flag(x) |= WN_CALL_DONT_INLINE) |
| #define WN_Set_Call_Fortran_Pointer_Rule | ( | x | ) | (WN_call_flag(x) |= WN_CALL_FORTRAN_POINTER_RULE) |
| #define WN_Set_Call_Inline | ( | x | ) | (WN_call_flag(x) |= WN_CALL_INLINE) |
| #define WN_Set_Call_Is_Virtual | ( | x | ) | (WN_call_flag(x) |= WN_CALL_IS_VIRTUAL) |
| #define WN_Set_Call_Never_Return | ( | x | ) | (WN_call_flag(x) |= WN_CALL_NEVER_RETURN) |
| #define WN_Set_Call_Non_Data_Mod | ( | x | ) | (WN_call_flag(x) |= WN_CALL_NON_DATA_MOD) |
| #define WN_Set_Call_Non_Data_Ref | ( | x | ) | (WN_call_flag(x) |= WN_CALL_NON_DATA_REF) |
| #define WN_Set_Call_Non_Parm_Mod | ( | x | ) | (WN_call_flag(x) |= WN_CALL_NON_PARM_MOD) |
| #define WN_Set_Call_Non_Parm_Ref | ( | x | ) | (WN_call_flag(x) |= WN_CALL_NON_PARM_REF) |
| #define WN_Set_Call_Parm_Mod | ( | x | ) | (WN_call_flag(x) |= WN_CALL_PARM_MOD) |
| #define WN_Set_Call_Parm_Ref | ( | x | ) | (WN_call_flag(x) |= WN_CALL_PARM_REF) |
| #define WN_Set_Call_Replace_By_Jump | ( | x | ) | (WN_call_flag(x) |= WN_CALL_REPLACE_BY_JUMP) |
| #define WN_set_do_loop_info | ( | x, | |||
| li | ) | (WN_kid((x),5) = (li)) |
| #define WN_Set_If_Guard | ( | x | ) | (WN_if_flag(x) |= WN_IF_IS_GUARD) |
| #define WN_Set_If_MpVersion | ( | x | ) | (WN_if_flag(x) |= WN_IF_IS_MPVERSION) |
| #define WN_Set_Label_Is_Break | ( | x | ) | (WN_label_flag(x) |= WN_LABEL_BREAK) |
| #define WN_Set_Label_Is_Handler_Begin | ( | x | ) |
| #define WN_set_label_loop_info | ( | x, | |||
| li | ) | (WN_kid0(x) = (li)) |
| #define WN_set_loop_induction | ( | x, | |||
| ind | ) | (WN_kid((x),0) = (ind)) |
| #define WN_Set_Loop_Innermost | ( | x | ) | (WN_loop_flag(x) |= WN_LOOP_INNERMOST) |
| #define WN_Set_Loop_Nz_Trip | ( | x | ) | (WN_loop_flag(x) |= WN_LOOP_NZ_TRIP) |
| #define WN_Set_Loop_Symb_Trip | ( | x | ) | (WN_loop_flag(x) |= WN_LOOP_SYMB_TRIP) |
| #define WN_set_loop_trip | ( | x, | |||
| trip | ) | (WN_kid((x),1) = (trip)) |
| #define WN_Set_Loop_Unimportant_Misc | ( | x | ) | (WN_loop_flag(x) |= WN_LOOP_UNIMPORTANT_MISC) |
| #define WN_Set_Loop_Winddown_Cache | ( | x | ) | (WN_loop_flag(x) |= WN_LOOP_WINDDOWN_CACHE) |
| #define WN_Set_Loop_Winddown_Reg | ( | x | ) | (WN_loop_flag(x) |= WN_LOOP_WINDDOWN_REG) |
| #define WN_Set_Parm_By_Reference | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_BY_REFERENCE) |
| #define WN_Set_Parm_By_Value | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_BY_VALUE) |
| #define WN_Set_Parm_Dummy | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_DUMMY) |
| #define WN_Set_Parm_In | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_IN) |
| #define WN_Set_Parm_Is_Killed | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_IS_KILLED) |
| #define WN_Set_Parm_Not_Exposed_Use | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_NOT_EXPOSED_USE) |
| #define WN_Set_Parm_Out | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_OUT) |
| #define WN_Set_Parm_Passed_Not_Saved | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_PASSED_NOT_SAVED) |
| #define WN_Set_Parm_Read_Only | ( | x | ) | (WN_parm_flag(x) |= WN_PARM_READ_ONLY) |
| #define WN_set_pragma_compiler_generated | ( | x | ) | ((WN_pragma_flags(x))|=WN_PRAGMA_COMPILER_GENERATED) |
| #define WN_set_pragma_omp | ( | x | ) | ((WN_pragma_flags(x)) |= WN_PRAGMA_OMP) |
| enum REGION_KIND |
| char* WN_asm_input_constraint | ( | const WN * | wn | ) | [inline] |
| char* WN_asm_string | ( | const WN * | wn | ) | [inline] |
| INT16& WN_cvtl_bits | ( | WN * | wn | ) | [inline] |
| INT16 WN_cvtl_bits | ( | const WN * | wn | ) | [inline] |
Definition at line 1230 of file wn_core.h.
References OPR_ASM_STMT, OPR_CALL, OPR_ICALL, OPR_IF, OPR_INTRINSIC_CALL, OPR_INTRINSIC_OP, OPR_IO, OPR_LOOP_INFO, OPR_PARM, OPR_PICCALL, OPR_PREFETCH, OPR_PREFETCHX, OPR_REGION, WN_asm_flag(), WN_call_flag(), WN_if_flag(), WN_io_flag(), WN_label_flag(), WN_loop_flag(), WN_operator(), and WN_prefetch_flag().
Definition at line 1330 of file wn_core.h.
References OPCODE_has_next_prev(), WN_linenum(), and WN_opcode().
| IOSTATEMENT& WN_io_statement | ( | WN * | wn | ) | [inline] |
| IOSTATEMENT WN_io_statement | ( | const WN * | wn | ) | [inline] |
Definition at line 1341 of file wn_core.h.
References DevAssert, FALSE, opc, OPCODE_has_1ty(), OPCODE_has_2ty(), OPCODE_operator(), OPR_ISTORE, OPR_MSTORE, TY_is_volatile, TY_pointed, Ty_Table, WN_load_addr_ty(), WN_opcode(), and WN_ty().
Definition at line 809 of file wn_core.h.
References WN::common, WN::kid_count, OPERATOR_nkids(), and WN_operator().
Definition at line 1202 of file wn_core.h.
References OPR_ILDBITS, OPR_ILOAD, WN::ty_fields, WN::u1u2, WN::u3, WN::uu, and WN_operator().
Definition at line 1600 of file wn_core.h.
References i, INT32, n, OPR_ICALL, OPR_PARM, OPR_PICCALL, WN_kid(), WN_kid_count(), WN_operator(), and WN_Parm_Dummy.
Definition at line 953 of file wn_core.h.
References WN::common, WN::desc, OPCODE_make_op(), WN::rtype, and WN::wn_operator.
| char* WN_pragma_asm_constraint | ( | const WN * | wn | ) | [inline] |
| REGION_KIND WN_region_kind | ( | const WN * | wn | ) | [inline] |
Definition at line 812 of file wn_core.h.
References WN::common, WN::kid_count, MAX_FIELD_ID, and UNKNOWN_FIELD_ID.
Definition at line 1263 of file wn_core.h.
References OPR_CALL, OPR_ICALL, OPR_IF, OPR_INTRINSIC_CALL, OPR_INTRINSIC_OP, OPR_IO, OPR_LOOP_INFO, OPR_PARM, OPR_PICCALL, OPR_PREFETCH, OPR_PREFETCHX, OPR_REGION, WN_call_flag(), WN_if_flag(), WN_io_flag(), WN_label_flag(), WN_loop_flag(), WN_operator(), and WN_prefetch_flag().
Definition at line 810 of file wn_core.h.
References WN::common, WN::kid_count, OPERATOR_nkids(), and WN_operator().
Definition at line 1322 of file wn_core.h.
References Is_True, OPCODE_has_next_prev(), WN_linenum(), and WN_opcode().
Definition at line 1214 of file wn_core.h.
References OPR_ILDBITS, OPR_ILOAD, WN::ty_fields, WN::u1u2, WN::u3, WN::uu, and WN_operator().
Definition at line 960 of file wn_core.h.
References WN::common, WN::desc, OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), WN::rtype, and WN::wn_operator.
| void WN_set_region_kind | ( | WN * | wn, | |
| REGION_KIND | k | |||
| ) | [inline] |
Definition at line 1185 of file wn_core.h.
References OPR_IO_ITEM, OPR_LDA, OPR_LDBITS, OPR_LDID, OPR_STBITS, OPR_STID, WN::ty_fields, WN::u1u2, WN::u3, WN::uu, and WN_operator().
Definition at line 1311 of file wn_core.h.
References INT16, MAX, mUINT64, OPCODE_has_next_prev(), WN_kid_count(), and WN_opcode().
Definition at line 1022 of file wn_core.h.
References Is_True, NULL, ST_IDX_index(), St_Table, WN_has_sym, and WN_st_idx().
Definition at line 1302 of file wn_core.h.
References OPCODE_has_next_prev(), WN_cast_WN_to_STMT_WN(), and WN_opcode().
Definition at line 1170 of file wn_core.h.
References OPR_IO_ITEM, OPR_LDA, OPR_LDBITS, OPR_LDID, OPR_STBITS, OPR_STID, WN::ty_fields, WN::u1u2, WN::u3, WN::uu, and WN_operator().
1.5.6