This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]