Question on operand_equal_p on different type conversion expressions
Bin.Cheng
amker.cheng@gmail.com
Tue May 21 05:50:00 GMT 2013
Hi,
I ran into a call of operand_equal_p for two type conversion tree nodes like:
arg0:
<nop_expr 0xb737a974
type <integer_type 0xb74faae0 public unsigned HI
size <integer_cst 0xb74e87c4 constant 16>
unit size <integer_cst 0xb74e87e0 constant 2>
align 16 symtab 0 alias set -1 canonical type 0xb74faae0
precision 16 min <integer_cst 0xb74e8b28 0> max <integer_cst
0xb74e8a64 65535>>
arg 0 <ssa_name 0xb73222f8
type <integer_type 0xb74fa420 long int sizes-gimplified public SI
size <integer_cst 0xb74e855c constant 32>
unit size <integer_cst 0xb74e8578 constant 4>
align 32 symtab 0 alias set 5 canonical type 0xb74fa420
precision 32 min <integer_cst 0xb74e8888 -2147483648> max <integer_cst
0xb74e88a4 2147483647> context <translation_unit_decl 0xb76a7d80
D.6120>
pointer_to_this <pointer_type 0xb75017e0>>
visiteddef_stmt _23 = *_22;
version 23>>
arg1:
<convert_expr 0xb737a3e8
type <integer_type 0xb74fa2a0 short int sizes-gimplified public HI
size <integer_cst 0xb74e87c4 constant 16>
unit size <integer_cst 0xb74e87e0 constant 2>
align 16 symtab 0 alias set 4 canonical type 0xb74fa2a0
precision 16 min <integer_cst 0xb74e8770 -32768> max <integer_cst
0xb74e878c 32767> context <translation_unit_decl 0xb76a7d80 D.6120>
pointer_to_this <pointer_type 0xb72db600>>
arg 0 <ssa_name 0xb73222f8
type <integer_type 0xb74fa420 long int sizes-gimplified public SI
size <integer_cst 0xb74e855c constant 32>
unit size <integer_cst 0xb74e8578 constant 4>
align 32 symtab 0 alias set 5 canonical type 0xb74fa420
precision 32 min <integer_cst 0xb74e8888 -2147483648> max <integer_cst
0xb74e88a4 2147483647> context <translation_unit_decl 0xb76a7d80
D.6120>
pointer_to_this <pointer_type 0xb75017e0>>
visiteddef_stmt _23 = *_22;
version 23>>
Though arg0 is a nop_expr, the conversion is actually not NOP and it
seems arg0 equals arg1.
The problem is operand_equal_q simply return false because arg0/arg1
have different tree code.
Should operand_equal_q take two kinds of conversion expression into
consideration, or arg0/arg1 are not equal? Thanks.
--
Best Regards.
More information about the Gcc
mailing list