<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">Am 25.08.2020 um 23:47 schrieb Benito
      van der Zander via fpc-pascal:<br>
    </div>
    <blockquote type="cite"
      cite="mid:2f1e07ce-9180-535f-3e0d-6add2cd3cd91@benibela.de">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div id="smartTemplate4-template">Hi,</div>
      <div><br>
      </div>
      <div>that is generating rather odd code (r40721)<br>
        <p>project1.lpr:9                            begin<br>
          0000000000401090 55                       push   %rbp<br>
          0000000000401091 4889e5                   mov    %rsp,%rbp<br>
          0000000000401094 488d6424f0               lea   
          -0x10(%rsp),%rsp<br>
          0000000000401099 48895df8                 mov   
          %rbx,-0x8(%rbp)<br>
          project1.lpr:10                           if TypeInfo(T) =
          TypeInfo(Integer) then WriteLn('an integer');<br>
          000000000040109D 488d1584af0700           lea   
          0x7af84(%rip),%rdx        # 0x47c028
          <RTTI_$SYSTEM_$$_LONGINT><br>
          00000000004010A4 488d057daf0700           lea   
          0x7af7d(%rip),%rax        # 0x47c028
          <RTTI_$SYSTEM_$$_LONGINT><br>
          00000000004010AB 4839c2                   cmp    %rax,%rdx<br>
          00000000004010AE 752b                     jne    0x4010db
          <ADD$1$CRC713F463B+75><br>
          00000000004010B0 e8cbcf0100               callq  0x41e080
          <fpc_get_output><br>
          00000000004010B5 4889c3                   mov    %rax,%rbx<br>
          00000000004010B8 488d15412f0600           lea   
          0x62f41(%rip),%rdx        # 0x464000 <_$PROJECT1$_Ld1><br>
          00000000004010BF 4889de                   mov    %rbx,%rsi<br>
          00000000004010C2 31ff                     xor    %edi,%edi<br>
          00000000004010C4 e867d30100               callq  0x41e430
          <fpc_write_text_shortstr><br>
          00000000004010C9 e8d2700100               callq  0x4181a0
          <fpc_iocheck><br>
          00000000004010CE 4889df                   mov    %rbx,%rdi<br>
          00000000004010D1 e85ad20100               callq  0x41e330
          <fpc_writeln_end><br>
          00000000004010D6 e8c5700100               callq  0x4181a0
          <fpc_iocheck><br>
          project1.lpr:11                           if TypeInfo(T) =
          TypeInfo(String) then WriteLn('a string');<br>
          00000000004010DB 488d0546af0700           lea   
          0x7af46(%rip),%rax        # 0x47c028
          <RTTI_$SYSTEM_$$_LONGINT><br>
          00000000004010E2 488d1537b20700           lea   
          0x7b237(%rip),%rdx        # 0x47c320
          <RTTI_$SYSTEM_$$_SHORTSTRING><br>
          00000000004010E9 4839d0                   cmp    %rdx,%rax<br>
          00000000004010EC 752b                     jne    0x401119
          <ADD$1$CRC713F463B+137><br>
          00000000004010EE e88dcf0100               callq  0x41e080
          <fpc_get_output><br>
          00000000004010F3 4889c3                   mov    %rax,%rbx<br>
          00000000004010F6 488d15132f0600           lea   
          0x62f13(%rip),%rdx        # 0x464010 <_$PROJECT1$_Ld2><br>
          00000000004010FD 4889de                   mov    %rbx,%rsi<br>
          0000000000401100 31ff                     xor    %edi,%edi<br>
          0000000000401102 e829d30100               callq  0x41e430
          <fpc_write_text_shortstr><br>
          0000000000401107 e894700100               callq  0x4181a0
          <fpc_iocheck><br>
          000000000040110C 4889df                   mov    %rbx,%rdi<br>
          000000000040110F e81cd20100               callq  0x41e330
          <fpc_writeln_end><br>
          0000000000401114 e887700100               callq  0x4181a0
          <fpc_iocheck><br>
          project1.lpr:12                           end;<br>
          <br>
        </p>
        The compiler should know everything about TypeInfo(T) and
        optimize it away where possible<br>
      </div>
    </blockquote>
    <br>
    For the compiler these are simply ordinary pointers, it does not
    (yet) have any knowledge about "constant" pointers. Though there is
    a bug report about that exact problem somewhere...<br>
    <br>
    Regards,<br>
    Sven<br>
  </body>
</html>