@@ -1880,7 +1880,7 @@ IR_FOLD(ADD(ADD, C_U32))
18801880IR_FOLD (ADD (ADD , C_U64 ))
18811881IR_FOLD (ADD (ADD , C_ADDR ))
18821882{
1883- if (IR_IS_CONST_REF (op1_insn -> op2 )) {
1883+ if (IR_IS_CONST_REF (op1_insn -> op2 ) && ! IR_IS_SYM_CONST ( ctx -> ir_base [ op1_insn -> op2 ]. op ) ) {
18841884 /* (x + c1) + c2 => x + (c1 + c2) */
18851885 val .u64 = ctx -> ir_base [op1_insn -> op2 ].val .u64 + op2_insn -> val .u64 ;
18861886 op1 = op1_insn -> op1 ;
@@ -1895,7 +1895,7 @@ IR_FOLD(ADD(ADD, C_I16))
18951895IR_FOLD (ADD (ADD , C_I32 ))
18961896IR_FOLD (ADD (ADD , C_I64 ))
18971897{
1898- if (IR_IS_CONST_REF (op1_insn -> op2 )) {
1898+ if (IR_IS_CONST_REF (op1_insn -> op2 ) && ! IR_IS_SYM_CONST ( ctx -> ir_base [ op1_insn -> op2 ]. op ) ) {
18991899 /* (x + c1) + c2 => x + (c1 + c2) */
19001900 val .i64 = ctx -> ir_base [op1_insn -> op2 ].val .i64 + op2_insn -> val .i64 ;
19011901 op1 = op1_insn -> op1 ;
@@ -1910,7 +1910,7 @@ IR_FOLD(MUL(MUL, C_U16))
19101910IR_FOLD (MUL (MUL , C_U32 ))
19111911IR_FOLD (MUL (MUL , C_U64 ))
19121912{
1913- if (IR_IS_CONST_REF (op1_insn -> op2 )) {
1913+ if (IR_IS_CONST_REF (op1_insn -> op2 ) && ! IR_IS_SYM_CONST ( ctx -> ir_base [ op1_insn -> op2 ]. op ) ) {
19141914 /* (x * c1) * c2 => x * (c1 * c2) */
19151915 val .u64 = ctx -> ir_base [op1_insn -> op2 ].val .u64 * op2_insn -> val .u64 ;
19161916 op1 = op1_insn -> op1 ;
@@ -1925,7 +1925,7 @@ IR_FOLD(MUL(MUL, C_I16))
19251925IR_FOLD (MUL (MUL , C_I32 ))
19261926IR_FOLD (MUL (MUL , C_I64 ))
19271927{
1928- if (IR_IS_CONST_REF (op1_insn -> op2 )) {
1928+ if (IR_IS_CONST_REF (op1_insn -> op2 ) && ! IR_IS_SYM_CONST ( ctx -> ir_base [ op1_insn -> op2 ]. op ) ) {
19291929 /* (x * c1) * c2 => x * (c1 * c2) */
19301930 val .i64 = ctx -> ir_base [op1_insn -> op2 ].val .i64 * op2_insn -> val .i64 ;
19311931 op1 = op1_insn -> op1 ;
@@ -1944,7 +1944,7 @@ IR_FOLD(AND(AND, C_I16))
19441944IR_FOLD (AND (AND , C_I32 ))
19451945IR_FOLD (AND (AND , C_I64 ))
19461946{
1947- if (IR_IS_CONST_REF (op1_insn -> op2 )) {
1947+ if (IR_IS_CONST_REF (op1_insn -> op2 ) && ! IR_IS_SYM_CONST ( ctx -> ir_base [ op1_insn -> op2 ]. op ) ) {
19481948 /* (x & c1) & c2 => x & (c1 & c2) */
19491949 val .u64 = ctx -> ir_base [op1_insn -> op2 ].val .u64 & op2_insn -> val .u64 ;
19501950 op1 = op1_insn -> op1 ;
@@ -1963,7 +1963,7 @@ IR_FOLD(OR(OR, C_I16))
19631963IR_FOLD (OR (OR , C_I32 ))
19641964IR_FOLD (OR (OR , C_I64 ))
19651965{
1966- if (IR_IS_CONST_REF (op1_insn -> op2 )) {
1966+ if (IR_IS_CONST_REF (op1_insn -> op2 ) && ! IR_IS_SYM_CONST ( ctx -> ir_base [ op1_insn -> op2 ]. op ) ) {
19671967 /* (x | c1) | c2 => x | (c1 | c2) */
19681968 val .u64 = ctx -> ir_base [op1_insn -> op2 ].val .u64 | op2_insn -> val .u64 ;
19691969 op1 = op1_insn -> op1 ;
@@ -1982,7 +1982,7 @@ IR_FOLD(XOR(XOR, C_I16))
19821982IR_FOLD (XOR (XOR , C_I32 ))
19831983IR_FOLD (XOR (XOR , C_I64 ))
19841984{
1985- if (IR_IS_CONST_REF (op1_insn -> op2 )) {
1985+ if (IR_IS_CONST_REF (op1_insn -> op2 ) && ! IR_IS_SYM_CONST ( ctx -> ir_base [ op1_insn -> op2 ]. op ) ) {
19861986 /* (x ^ c1) ^ c2 => x ^ (c1 ^ c2) */
19871987 val .u64 = ctx -> ir_base [op1_insn -> op2 ].val .u64 ^ op2_insn -> val .u64 ;
19881988 op1 = op1_insn -> op1 ;
0 commit comments