This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Question on VUSE
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: gcc at gcc dot gnu dot org
- Date: Tue, 3 Aug 04 13:38:00 EDT
- Subject: Question on VUSE
I don't understand the VUSE on the statement defining T.4_8. Can somebody
explain where it's coming from?
<bb 0>:
# VUSE <tbg0803__unit_table_1>;
tbg0803__unit_table.1_2 = tbg0803__unit_table;
# VUSE <tbg0803__utn_3>;
tbg0803__utn.2_4 = tbg0803__utn;
T.3_6 = (<unnamed type>) tbg0803__utn.2_4;
sn_7 = &(*tbg0803__unit_table.1_2)[T.3_6]{lb: 1 sz: 12}.serial_number;
# VUSE <tbg0803__utn_3>;
T.4_8 = *sn_7;
T.5_9 = T.4_8 + 1;
# tbg0803__utn_12 = V_MAY_DEF <tbg0803__utn_3>;
*sn_7 = T.5_9;
The test case is
package Tbg0803 is
type R is record
F1, F2: Integer;
Serial_Number: Integer;
end record;
type A is array (1..10) of R;
type Ap is access all A;
Unit_Table: Ap;
Utn: Integer;
T1, T2, T3, T4: Integer;
function Sub1 return Integer;
end Tbg0803;
package body Tbg0803 is
function Sub1 return Integer is
Sn: Integer renames Unit_Table (Utn).Serial_Number;
begin
Sn := Sn + 1;
return Sn;
end Sub1;
end Tbg0803;