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