Just curliousity, nothing of the below is in any way a problem. Only I would like to understand.

program project1;
var a: integer;
begin
  a:=1;
end.

generates for "a"
DW_TAG_variable
which points to (via DW_AT_type)    DW_TAG_typedef
which points to (via DW_AT_type)   DW_TAG_base_type

Looking at the rtl source, you will see
    type Integer: longint;

"integer" is a declared type, of the build in (base type) longint.

DW_TAG_base_type has DW_AT_name = longint. That is expected

DW_TAG_typedef   has DW_AT_name = longint. That I do *NOT* understand.
DW_TAG_typedef stands for the definition of "Integer", or does it not? If it does, then should not the name be "integer"?


On the other hand
var a: longint;
generates the same. Why?

_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to