Take the following Ada code:
package Test1 is
   type TSS_Name_Type is new String (1 .. 2);
   function Get_TSS_Name  return TSS_Name_Type;
end test1;
package body Test1 is
   function Get_TSS_Name  return TSS_Name_Type is
   begin
     return "  ";
  end Get_TSS_Name;
end Test1;
--(reduced from exp_tss.ad?).

We get types which are not considered compatible by 
lang_hooks.types_compatible_p.

The types we get are
for the right hand side (the STRING_CST):
<array_type 0x42549828 test1__get_tss_name__T1b
    type <integer_type 0x4253bbc8 character sizes-gimplified public unsigned QI
        size <integer_cst 0x42508200 constant invariant visited 8>
        unit size <integer_cst 0x42508220 constant invariant 1>
        user align 8 symtab 0 alias set -1 precision 8 min <integer_cst 
0x42535f80 0> max <integer_cst 
0x42535fa0 255> RM size <integer_cst 0x42508200 8>
        pointer_to_this <pointer_type 0x4253be80 access_character>>
    sizes-gimplified HI
    size <integer_cst 0x42508360 type <integer_type 0x4250f1d0 bit_size_type> 
constant invariant 
16>
    unit size <integer_cst 0x42508380 type <integer_type 0x4250f15c long int> 
constant invariant 2>
    user align 8 symtab 0 alias set 0
    domain <integer_type 0x42549740
        type <integer_type 0x4250f15c long int sizes-gimplified public visited 
sizetype SI
            size <integer_cst 0x425084a0 constant invariant 32>
            unit size <integer_cst 0x42508160 constant invariant 4>
            align 32 symtab 0 alias set -1 precision 32 min <integer_cst 
0x425088c0 -2147483648> max 
<integer_cst 0x42508940 2147483647>>
        sizes-gimplified SI size <integer_cst 0x425084a0 32> unit size 
<integer_cst 0x42508160 4>
        align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x42508220 
1> max <integer_cst 
0x42508380 2>
        index type <integer_type 0x425496cc type <integer_type 0x4250f488 
integer>
            SI size <integer_cst 0x425084a0 32> unit size <integer_cst 
0x42508160 4>
            align 32 symtab 0 alias set -1 precision 32 min <integer_cst 
0x42508a20 1> max <integer_cst 
0x4251e080 2>>>>

For the left hand side (<retval>):
<array_type 0x42549488 test1__tss_name_type
    type <integer_type 0x4253bbc8 character sizes-gimplified public unsigned QI
        size <integer_cst 0x42508200 constant invariant visited 8>
        unit size <integer_cst 0x42508220 constant invariant 1>
        user align 8 symtab 0 alias set -1 precision 8 min <integer_cst 
0x42535f80 0> max <integer_cst 
0x42535fa0 255> RM size <integer_cst 0x42508200 8>
        pointer_to_this <pointer_type 0x4253be80 access_character>>
    sizes-gimplified visited nonaliased-component HI
    size <integer_cst 0x42508360 type <integer_type 0x4250f1d0 bit_size_type> 
constant invariant 
16>
    unit size <integer_cst 0x42508380 type <integer_type 0x4250f15c long int> 
constant invariant 2>
    user align 8 symtab 0 alias set 0
    domain <integer_type 0x425493a0
        type <integer_type 0x4250f15c long int sizes-gimplified public visited 
sizetype SI
            size <integer_cst 0x425084a0 constant invariant 32>
            unit size <integer_cst 0x42508160 constant invariant 4>
            align 32 symtab 0 alias set -1 precision 32 min <integer_cst 
0x425088c0 -2147483648> max 
<integer_cst 0x42508940 2147483647>>
        sizes-gimplified visited SI size <integer_cst 0x425084a0 32> unit size 
<integer_cst 
0x42508160 4>
        align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0x42508220 
1> max <integer_cst 
0x42508380 2>
        index type <integer_type 0x425492b8 test1__Ttss_name_typeP1___XDLU_1__2 
type <integer_type 
0x4250f488 integer>
            sizes-gimplified visited unsigned SI size <integer_cst 0x425084a0 
32> unit size <integer_cst 
0x42508160 4>
            user align 32 symtab 0 alias set -1 precision 32 min <integer_cst 
0x42508a20 1> max 
<integer_cst 0x4251e080 2>
            RM size <integer_cst 0x4251e0a0 constant invariant 2>>>
    pointer_to_this <pointer_type 0x425499f8>>

-- 
           Summary: Ada produces mistmatched (non compatible) types in
                    MODIFY_EXPR
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22328

Reply via email to