This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Another DCE problem with array addresses
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: dnovillo at redhat dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 1 Aug 04 09:29:04 EDT
- Subject: Another DCE problem with array addresses
This looks very similar to the problem fixed with
http://gcc.gnu.org/ml/gcc-patches/2004-07/msg02671.html
Here's the test case (cut down from the ACATS suite):
PROCEDURE C41325A IS
TYPE ARRAY_1 IS ARRAY (1..10) OF INTEGER;
VAR_ARA_1 : ARRAY_1 := (1..10 => 1);
BEGIN
IF "<=" (VAR_ARA_1, ARRAY_1'(1..10 => 1)) THEN
NULL;
ELSE
raise Program_Error;
END IF;
END C41325A;
Here's the relevant diff:
*** c41325a.adb.t21.copyrename1 2004-08-01 09:24:50.000000000 -0400
--- c41325a.adb.t22.dce1 2004-08-01 09:24:50.000000000 -0400
***************
*** 42,75 ****
var_ara_1[7]{lb: 1 sz: 4} = 1;
# var_ara_1_9 = V_MAY_DEF <var_ara_1_8>;
var_ara_1[8]{lb: 1 sz: 4} = 1;
# var_ara_1_10 = V_MAY_DEF <var_ara_1_9>;
var_ara_1[9]{lb: 1 sz: 4} = 1;
# var_ara_1_11 = V_MAY_DEF <var_ara_1_10>;
var_ara_1[10]{lb: 1 sz: 4} = 1;
- # T.0_13 = V_MAY_DEF <T.0_12>;
- T.0[1]{lb: 1 sz: 4} = 1;
- # T.0_14 = V_MAY_DEF <T.0_13>;
- T.0[2]{lb: 1 sz: 4} = 1;
- # T.0_15 = V_MAY_DEF <T.0_14>;
- T.0[3]{lb: 1 sz: 4} = 1;
- # T.0_16 = V_MAY_DEF <T.0_15>;
- T.0[4]{lb: 1 sz: 4} = 1;
- # T.0_17 = V_MAY_DEF <T.0_16>;
- T.0[5]{lb: 1 sz: 4} = 1;
- # T.0_18 = V_MAY_DEF <T.0_17>;
- T.0[6]{lb: 1 sz: 4} = 1;
- # T.0_19 = V_MAY_DEF <T.0_18>;
- T.0[7]{lb: 1 sz: 4} = 1;
- # T.0_20 = V_MAY_DEF <T.0_19>;
- T.0[8]{lb: 1 sz: 4} = 1;
- # T.0_21 = V_MAY_DEF <T.0_20>;
- T.0[9]{lb: 1 sz: 4} = 1;
- # T.0_22 = V_MAY_DEF <T.0_21>;
- T.0[10]{lb: 1 sz: 4} = 1;
R12b_23 = &T.0;
R12b.1_24 = (SIGNED_64)R12b_23;
R12b.2_25 = (system__address)R12b.1_24;
var_ara_1.3_26 = (SIGNED_64)&var_ara_1;
var_ara_1.4_27 = (system__address)var_ara_1.3_26;
# var_ara_1_29 = V_MAY_DEF <var_ara_1_11>;
T.5_28 = system__compare_array_signed_32__compare_array_s32 (var_ara_1.4_27,
R12b.2_25, 10, 10);
--- 42,55 ----