public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Fix lto-symtab ICE during Ada LTO bootstrap
@ 2015-11-21 18:35 Jan Hubicka
  2015-11-22 14:46 ` Eric Botcazou
  0 siblings, 1 reply; 25+ messages in thread
From: Jan Hubicka @ 2015-11-21 18:35 UTC (permalink / raw)
  To: gcc-patches, ebotcazou

Hi,
this patch fixes an ICE seen with Ada LTO bootstrap in reporting type mismatches
and it also makes us to stop complaining about C++ ODR violation.  The warnings
are however correct.  I looked at few:

../../libiberty/xstrerror.c:40:14: warning: type of �strerror� does not match original declaration [-Wlto-type-mismatch]
 extern char *strerror (int);
              ^

../../gcc/ada/s-os_lib.adb:1007:16: note: return value type mismatch
       function strerror (errnum : Integer) return System.Address;
                ^

../../gcc/ada/s-os_lib.adb:1007:16: note: �system__os_lib__errno_message__strerror� was previously declared here

Here we have function returning pointer WRT function returning integer:

 <function_decl 0x7ffff5865a80 strerror
    type <function_type 0x7ffff58660a8
        type <pointer_type 0x7ffff5808e70 type <integer_type 0x7ffff57dac78 char>
            public unsigned DI
            size <integer_cst 0x7ffff6ad7bb8 constant 64>
            unit size <integer_cst 0x7ffff6ad7bd0 constant 8>
            align 64 symtab 0 alias set -1 structural equality context <translation_unit_decl 0x7ffff579fac8 D.59070>
            pointer_to_this <pointer_type 0x7ffff584e1f8>>
        QI
        size <integer_cst 0x7ffff6ad7ca8 constant 8>
        unit size <integer_cst 0x7ffff6ad7cc0 constant 1>
        align 8 symtab 0 alias set 0 structural equality
        arg-types <tree_list 0x7ffff6910848 value <integer_type 0x7ffff6adb7e0 int>
            chain <tree_list 0x7ffff6ae99b0 value <void_type 0x7ffff6af0150 void>>>
        pointer_to_this <pointer_type 0x7ffff5866690>>
    addressable public external QI file ../../libiberty/xstrerror.c line 40 col 14 align 8 context <translation_unit_decl 0x7ffff5842d20 D.60311>>
 <function_decl 0x7ffff5ce6c40 system__os_lib__errno_message__strerror
    type <function_type 0x7ffff5ce5f18
        type <integer_type 0x7ffff6cc7d20 system__address public unsigned DI
            size <integer_cst 0x7ffff6ad7bb8 constant 64>
            unit size <integer_cst 0x7ffff6ad7bd0 constant 8>
            align 64 symtab 0 alias set -1 canonical type 0x7ffff6adb930 precision 64 min <integer_cst 0x7ffff6cb3cc0 0> max <integer_cst 0x7ffff6cbe2e0 18446744073709551615> context <translation_unit_decl 0x7ffff6ae1168 D.3880>
            pointer_to_this <pointer_type 0x7ffff5d08498> chain <type_decl 0x7ffff6cc6260 system__address>>
        QI
        size <integer_cst 0x7ffff6ad7ca8 constant 8>
        unit size <integer_cst 0x7ffff6ad7cc0 constant 1>
        align 8 symtab 0 alias set 0 structural equality
        arg-types <tree_list 0x7ffff6cc55a0 value <integer_type 0x7ffff6cc7930 integer>
            chain <tree_list 0x7ffff6ae99b0 value <void_type 0x7ffff6af0150 void>>>
        pointer_to_this <pointer_type 0x7ffff5d02bd0>>
    addressable public external QI file ../../gcc/ada/s-os_lib.adb line 1007 col 16 align 8 context <translation_unit_decl 0x7ffff6095f78 D.32418>>
$7 = void

<built-in>: warning: type of �__builtin_strlen� does not match original declaration [-Wlto-type-mismatch]
../../gcc/ada/osint.adb:422:19: note: return value type mismatch
../../gcc/ada/osint.adb:422:19: note: type �integer� should match type �long unsigned int�

Here the signedness of integer does not match:

 <integer_type 0x7ffff6adb9d8 long unsigned int public unsigned DI
    size <integer_cst 0x7ffff6ad7bb8 type <integer_type 0x7ffff6adb2a0 bitsizetype> constant 64>
    unit size <integer_cst 0x7ffff6ad7bd0 type <integer_type 0x7ffff6adb1f8 sizetype> constant 8>
    align 64 symtab 0 alias set -1 canonical type 0x7ffff6adb930 precision 64 min <integer_cst 0x7ffff6ad7e88 0> max <integer_cst 0x7ffff6ae64c0 18446744073709551615>
    pointer_to_this <pointer_type 0x7ffff59d2930>>
 <integer_type 0x7ffff6cc7930 integer
    type <integer_type 0x7ffff6adb7e0 int public SI
        size <integer_cst 0x7ffff6ad7df8 constant 32>
        unit size <integer_cst 0x7ffff6ad7e10 constant 4>
        align 32 symtab 0 alias set -1 canonical type 0x7ffff6adb7e0 precision 32 min <integer_cst 0x7ffff6ad7db0 -2147483648> max <integer_cst 0x7ffff6ad7dc8 2147483647>
        pointer_to_this <pointer_type 0x7ffff6af0930>>
    public SI size <integer_cst 0x7ffff6ad7df8 32> unit size <integer_cst 0x7ffff6ad7e10 4>
    align 32 symtab 0 alias set -1 canonical type 0x7ffff6adb7e0 precision 32 min <integer_cst 0x7ffff6cb3c78 -2147483648> max <integer_cst 0x7ffff6cb3c60 2147483647> context <translation_unit_decl 0x7ffff6ae1168 D.3880>
    pointer_to_this <pointer_type 0x7ffff614c9d8> chain <type_decl 0x7ffff6cc6130 integer>>
$17 = void

../../gcc/ada/s-os_lib.ads:1053:4: warning: type of �system__os_lib__directory_separator� does not match original declaration [-Wlto-type-mismatch]
    Directory_Separator : constant Character;
    ^

../../gcc/ada/adaint.c:225:6: note: type �char� should match type �volatile character�
 char __gnat_dir_separator = DIR_SEPARATOR;
      ^

Here we get difference in  signedness and volatility:

 <var_decl 0x7ffff69871b0 __gnat_dir_separator
    type <integer_type 0x7ffff6964738 char public string-flag QI
        size <integer_cst 0x7ffff6ad7ca8 constant 8>
        unit size <integer_cst 0x7ffff6ad7cc0 constant 1>
        align 8 symtab 0 alias set 0 canonical type 0x7ffff6adb5e8 precision 8 min <integer_cst 0x7ffff6936810 -128> max <integer_cst 0x7ffff6936828 127>
        pointer_to_this <pointer_type 0x7ffff576be70> reference_to_this <reference_type 0x7ffff5a00dc8>>
    addressable public static QI file ../../gcc/ada/adaint.c line 225 col 6 size <integer_cst 0x7ffff6ad7ca8 8> unit size <integer_cst 0x7ffff6ad7cc0 1>
    align 8 context <translation_unit_decl 0x7ffff6ae1708 D.5140> initial <integer_cst 0x7ffff6936f90 47>>
$18 = void
(gdb) p debug_tree (decl)
 <var_decl 0x7ffff5f86c60 system__os_lib__directory_separator
    type <integer_type 0x7ffff6ccf150 character volatile unsigned string-flag QI
        size <integer_cst 0x7ffff6ad7ca8 constant 8>
        unit size <integer_cst 0x7ffff6ad7cc0 constant 1>
        align 8 symtab 0 alias set -1 canonical type 0x7ffff6adb5e8 precision 8 min <integer_cst 0x7ffff6ad7cd8 0> max <integer_cst 0x7ffff6ad7c78 255> context <translation_unit_decl 0x7ffff6ae1168 D.3880>
        pointer_to_this <pointer_type 0x7ffff68e32a0>>
    side-effects addressable volatile public unsigned external QI file ../../gcc/ada/s-os_lib.ads line 1053 col 4 size <integer_cst 0x7ffff6ad7ca8 8> unit size <integer_cst 0x7ffff6ad7cc0 1>
    align 8 context <translation_unit_decl 0x7ffff5ee2780 D.29282>>
$19 = void

All those types will lead to wrong code if ever written to same memory location
because of TBAA.  Eric, does Ada need all this types to be TBAA compatible?
If so, we need to implement more strict globbing as we did for Fortran and we
probably finally need to make the globbing aware of languages involved (we
definitly don't want to glob pointers and integers for C/C++ programs)

Eric, it would be great to have a stand alone testcases in style of
gcc/testsuite/gfortran.dg/lto/bind_c-*
which stores and reads the same memory location in same alias set and thus
trigger the undefined behvaiour.

Bootstrapped/regtested x86_64-linux, will commit it shortly.

Honza

	* lto-symtab.c (warn_type_compatibility_p): Do not set ODR mismatch
	flag for types that are not ODR; fix loop walking parameters.
Index: lto-symtab.c
===================================================================
--- lto-symtab.c	(revision 230683)
+++ lto-symtab.c	(working copy)
@@ -180,16 +180,26 @@ lto_varpool_replace_node (varpool_node *
 /* Return non-zero if we want to output waring about T1 and T2.
    Return value is a bitmask of reasons of violation:
    Bit 0 indicates that types are not compatible of memory layout.
-   Bot 1 indicates that types are not compatible because of C++ ODR rule.  */
+   Bit 1 indicates that types are not compatible because of C++ ODR rule.  */
 
 static int
 warn_type_compatibility_p (tree prevailing_type, tree type)
 {
   int lev = 0;
+
+  /* Get complete type.
+     ???  We might want to emit a warning here if type qualification
+     differences were spotted.  Do not do this unconditionally though.  */
+  type = TYPE_MAIN_VARIANT (type);
+  prevailing_type = TYPE_MAIN_VARIANT (prevailing_type);
+  if (prevailing_type == type)
+    return 0;
+
+  bool odr_p = odr_or_derived_type_p (prevailing_type)
+	       && odr_or_derived_type_p (type);
   /* C++ provide a robust way to check for type compatibility via the ODR
      rule.  */
-  if (odr_or_derived_type_p (prevailing_type) && odr_or_derived_type_p (type)
-      && !odr_types_equivalent_p (prevailing_type, type))
+  if (odr_p && !odr_types_equivalent_p (prevailing_type, type))
     lev = 2;
 
   /* Function types needs special care, because types_compatible_p never
@@ -209,15 +219,15 @@ warn_type_compatibility_p (tree prevaili
 	  for (parm1 = TYPE_ARG_TYPES (prevailing_type),
 	       parm2 = TYPE_ARG_TYPES (type);
 	       parm1 && parm2;
-	       parm1 = TREE_CHAIN (prevailing_type),
-	       parm2 = TREE_CHAIN (type))
+	       parm1 = TREE_CHAIN (parm1),
+	       parm2 = TREE_CHAIN (parm2))
 	    lev |= warn_type_compatibility_p (TREE_VALUE (parm1),
 					      TREE_VALUE (parm2));
 	  if (parm1 || parm2)
-	    lev = 3;
+	    lev = odr_p ? 3 : 1;
 	}
       if (comp_type_attributes (prevailing_type, type) == 0)
-	lev = 3;
+	lev = odr_p ? 3 : 1;
       return lev;
     }
   /* Sharing a global symbol is a strong hint that two types are
@@ -270,9 +280,6 @@ warn_type_compatibility_p (tree prevaili
       /* Fallthru.  Compatible enough.  */
     }
 
-  /* ???  We might want to emit a warning here if type qualification
-     differences were spotted.  Do not do this unconditionally though.  */
-
   return lev;
 }
 

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-21 18:35 Fix lto-symtab ICE during Ada LTO bootstrap Jan Hubicka
@ 2015-11-22 14:46 ` Eric Botcazou
  2015-11-22 15:17   ` Arnaud Charlet
  2015-11-22 18:49   ` Jan Hubicka
  0 siblings, 2 replies; 25+ messages in thread
From: Eric Botcazou @ 2015-11-22 14:46 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches

> this patch fixes an ICE seen with Ada LTO bootstrap in reporting type
> mismatches and it also makes us to stop complaining about C++ ODR
> violation.  The warnings are however correct.  I looked at few:
> 
> ../../libiberty/xstrerror.c:40:14: warning: type of �strerror� does not
> match original declaration [-Wlto-type-mismatch] extern char *strerror
> (int);
>               ^
> 
> ../../gcc/ada/s-os_lib.adb:1007:16: note: return value type mismatch
>        function strerror (errnum : Integer) return System.Address;
>                 ^
> 
> ../../gcc/ada/s-os_lib.adb:1007:16: note:
> �system__os_lib__errno_message__strerror� was previously declared here
> 
> Here we have function returning pointer WRT function returning integer:

This one is on purpose and cannot be easily changed.  Pointer types (or access 
types as called in Ada) are avoided as much as possible in the runtime because 
they drag the accessibility machinery, which is the machinery present in the 
language to eliminate dangling references and is heavy; so they are usually 
imported as System.Address instead.

> <built-in>: warning: type of �__builtin_strlen� does not match original
> declaration [-Wlto-type-mismatch] ../../gcc/ada/osint.adb:422:19: note:
> return value type mismatch
> ../../gcc/ada/osint.adb:422:19: note: type �integer� should match type �long
> unsigned int�
> 
> Here the signedness of integer does not match:

Yes, it's clearly incorrect on the Ada side and should be fixed in osint.adb.

> ../../gcc/ada/s-os_lib.ads:1053:4: warning: type of
> �system__os_lib__directory_separator� does not match original declaration
> [-Wlto-type-mismatch] Directory_Separator : constant Character;
>     ^
> 
> ../../gcc/ada/adaint.c:225:6: note: type �char� should match type �volatile
> character� char __gnat_dir_separator = DIR_SEPARATOR;
>       ^
> 
> Here we get difference in  signedness and volatility:

The signedness issue for Character is known and we plan to address it; the 
volatility issue was overlooked but looks fixable too.

> All those types will lead to wrong code if ever written to same memory
> location because of TBAA.  Eric, does Ada need all this types to be TBAA
> compatible? If so, we need to implement more strict globbing as we did for
> Fortran and we probably finally need to make the globbing aware of
> languages involved (we definitly don't want to glob pointers and integers
> for C/C++ programs)

I think that we can fix all the problems on the Ada side except for the 
pointer/System.Address duality (which can be even more problematic on 
architectures that use different calling conventions for them).

> Eric, it would be great to have a stand alone testcases in style of
> gcc/testsuite/gfortran.dg/lto/bind_c-*
> which stores and reads the same memory location in same alias set and thus
> trigger the undefined behvaiour.

OK, I'll think about that, thanks.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-22 14:46 ` Eric Botcazou
@ 2015-11-22 15:17   ` Arnaud Charlet
  2015-11-23  1:24     ` Jan Hubicka
  2015-11-22 18:49   ` Jan Hubicka
  1 sibling, 1 reply; 25+ messages in thread
From: Arnaud Charlet @ 2015-11-22 15:17 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: Jan Hubicka, gcc-patches

> > ../../gcc/ada/s-os_lib.adb:1007:16: note: return value type
> > mismatch
> >        function strerror (errnum : Integer) return System.Address;
> >                 ^
> > 
> > ../../gcc/ada/s-os_lib.adb:1007:16: note:
> > ???system__os_lib__errno_message__strerror??? was previously
> > declared here
> > 
> > Here we have function returning pointer WRT function returning integer:
> 
> This one is on purpose and cannot be easily changed.  Pointer types (or access
> types as called in Ada) are avoided as much as possible in the runtime because
> they drag the accessibility machinery, which is the machinery present in
> the
> language to eliminate dangling references and is heavy; so they are usually
> imported as System.Address instead.

This particular instance can probably be fixed, I'll give it a shot when I
get a chance. But you're right that the general issue is that System.Address
is often used as a void*

Arno

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-22 14:46 ` Eric Botcazou
  2015-11-22 15:17   ` Arnaud Charlet
@ 2015-11-22 18:49   ` Jan Hubicka
  1 sibling, 0 replies; 25+ messages in thread
From: Jan Hubicka @ 2015-11-22 18:49 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: Jan Hubicka, gcc-patches

> > this patch fixes an ICE seen with Ada LTO bootstrap in reporting type
> > mismatches and it also makes us to stop complaining about C++ ODR
> > violation.  The warnings are however correct.  I looked at few:
> > 
> > ../../libiberty/xstrerror.c:40:14: warning: type of �strerror� does not
> > match original declaration [-Wlto-type-mismatch] extern char *strerror
> > (int);
> >               ^
> > 
> > ../../gcc/ada/s-os_lib.adb:1007:16: note: return value type mismatch
> >        function strerror (errnum : Integer) return System.Address;
> >                 ^
> > 
> > ../../gcc/ada/s-os_lib.adb:1007:16: note:
> > �system__os_lib__errno_message__strerror� was previously declared here
> > 
> > Here we have function returning pointer WRT function returning integer:
> 
> This one is on purpose and cannot be easily changed.  Pointer types (or access 
> types as called in Ada) are avoided as much as possible in the runtime because 
> they drag the accessibility machinery, which is the machinery present in the 
> language to eliminate dangling references and is heavy; so they are usually 
> imported as System.Address instead.

Yep, I read the specification yesterday.

It seems to me that the only way to handle this is to put the integer type
used to represent pointers to the same alias set as void_ptr_type.
This is doable by simply making gimple_canonical_types_compatible_p and
lto.c handle this type specially as "pointer".

I can implement this; but I woul dlike to enable this kind of globing only
when there is an union in Ada.

> 
> > <built-in>: warning: type of �__builtin_strlen� does not match original
> > declaration [-Wlto-type-mismatch] ../../gcc/ada/osint.adb:422:19: note:
> > return value type mismatch
> > ../../gcc/ada/osint.adb:422:19: note: type �integer� should match type �long
> > unsigned int�
> > 
> > Here the signedness of integer does not match:
> 
> Yes, it's clearly incorrect on the Ada side and should be fixed in osint.adb.

Great!
> 
> > ../../gcc/ada/s-os_lib.ads:1053:4: warning: type of
> > �system__os_lib__directory_separator� does not match original declaration
> > [-Wlto-type-mismatch] Directory_Separator : constant Character;
> >     ^
> > 
> > ../../gcc/ada/adaint.c:225:6: note: type �char� should match type �volatile
> > character� char __gnat_dir_separator = DIR_SEPARATOR;
> >       ^
> > 
> > Here we get difference in  signedness and volatility:
> 
> The signedness issue for Character is known and we plan to address it; the 
> volatility issue was overlooked but looks fixable too.

Actually the volatility is not a big deal: we ignore it for canonical type
computation anyway (probably we don't, but in general we do not need
to care much about optimizing volatile memory accesses, so we lose nothing by
handling this safely)
> 
> > All those types will lead to wrong code if ever written to same memory
> > location because of TBAA.  Eric, does Ada need all this types to be TBAA
> > compatible? If so, we need to implement more strict globbing as we did for
> > Fortran and we probably finally need to make the globbing aware of
> > languages involved (we definitly don't want to glob pointers and integers
> > for C/C++ programs)
> 
> I think that we can fix all the problems on the Ada side except for the 
> pointer/System.Address duality (which can be even more problematic on 
> architectures that use different calling conventions for them).

That sounds good.  I can try to cook up the prototype patch for pointers.
I fixed issues that breaks Ada bootstrap, but I still get an ICE in LTO
built gnat1 in Ada code.  I am not quite sure what is wrong (it fails
early setting some flags in atree, but that is as far as I can read the code)

Honza
> 
> > Eric, it would be great to have a stand alone testcases in style of
> > gcc/testsuite/gfortran.dg/lto/bind_c-*
> > which stores and reads the same memory location in same alias set and thus
> > trigger the undefined behvaiour.
> 
> OK, I'll think about that, thanks.
> 
> -- 
> Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-22 15:17   ` Arnaud Charlet
@ 2015-11-23  1:24     ` Jan Hubicka
  2015-11-23  9:59       ` Arnaud Charlet
  0 siblings, 1 reply; 25+ messages in thread
From: Jan Hubicka @ 2015-11-23  1:24 UTC (permalink / raw)
  To: Arnaud Charlet; +Cc: Eric Botcazou, Jan Hubicka, gcc-patches

> > > ../../gcc/ada/s-os_lib.adb:1007:16: note: return value type
> > > mismatch
> > >        function strerror (errnum : Integer) return System.Address;
> > >                 ^
> > > 
> > > ../../gcc/ada/s-os_lib.adb:1007:16: note:
> > > ???system__os_lib__errno_message__strerror??? was previously
> > > declared here
> > > 
> > > Here we have function returning pointer WRT function returning integer:
> > 
> > This one is on purpose and cannot be easily changed.  Pointer types (or access
> > types as called in Ada) are avoided as much as possible in the runtime because
> > they drag the accessibility machinery, which is the machinery present in
> > the
> > language to eliminate dangling references and is heavy; so they are usually
> > imported as System.Address instead.
> 
> This particular instance can probably be fixed, I'll give it a shot when I
> get a chance. But you're right that the general issue is that System.Address
> is often used as a void*

Hi,
I updated the warning to actually check if the TBAA information is in conflict
and silence warnings on allowed type transtions that are not useless_type_conversion_p
(which is needed for Fortran, too). This is list of warnings I get which I suppose will
need to be adressed.


../../libiberty/xstrerror.c:40:14: warning: type of ‘strerror’ does not match original declaration [-Wlto-type-mismatch]
 extern char *strerror (int);
              ^

../../gcc/ada/s-os_lib.adb:1007:16: note: return value type mismatch
       function strerror (errnum : Integer) return System.Address;
                ^

../../libiberty/xstrerror.c:40:14: note: code may be misoptimized unless -fno-strict-aliasing is used
 extern char *strerror (int);
              ^

../../gcc/ada/s-os_lib.adb:1007:16: note: ‘system__os_lib__errno_message__strerror’ was previously declared here
       function strerror (errnum : Integer) return System.Address;
                ^

../../gcc/ada/s-os_lib.adb:1207:7: warning: type of ‘target_object_ext_ptr’ does not match original declaration [-Wlto-type-mismatch]
       Target_Object_Ext_Ptr : Address;
       ^

../../gcc/ada/s-os_lib.adb:1207:7: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/targext.c:60:13: note: ‘__gnat_target_object_extension’ was previously declared here
 const char *__gnat_target_object_extension = TARGET_OBJECT_SUFFIX;
             ^

../../gcc/ada/s-os_lib.adb:1183:7: warning: type of ‘target_exec_ext_ptr’ does not match original declaration [-Wlto-type-mismatch]
       Target_Exec_Ext_Ptr : Address;
       ^

../../gcc/ada/s-os_lib.adb:1183:7: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/targext.c:61:13: note: ‘__gnat_target_executable_extension’ was previously declared here
 const char *__gnat_target_executable_extension = TARGET_EXECUTABLE_SUFFIX;
             ^

../../gcc/ada/s-os_lib.adb:1159:7: warning: type of ‘target_exec_ext_ptr’ does not match original declaration [-Wlto-type-mismatch]
       Target_Exec_Ext_Ptr : Address;
       ^

../../gcc/ada/s-os_lib.adb:1159:7: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/targext.c:62:13: note: ‘__gnat_target_debuggable_extension’ was previously declared here
 const char *__gnat_target_debuggable_extension = TARGET_EXECUTABLE_SUFFIX;
             ^

../../gcc/ada/osint.adb:3214:16: warning: type of ‘osint__update_path__c_update_path’ does not match original declaration [-Wlto-type-mismatch]
       function C_Update_Path (Path, Component : Address) return Address;
                ^

../../gcc/prefix.c:247:1: note: return value type mismatch
 update_path (const char *path, const char *key)
 ^

../../gcc/ada/osint.adb:3214:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function C_Update_Path (Path, Component : Address) return Address;
                ^

../../gcc/prefix.c:247:1: note: ‘update_path’ was previously declared here
 update_path (const char *path, const char *key)
 ^

../../gcc/ada/s-os_lib.adb:2717:17: warning: type of ‘system__os_lib__setenv__set_env_value’ does not match original declaration [-Wlto-type-mismatch]
       procedure Set_Env_Value (Name, Value : System.Address);
                 ^

../../gcc/ada/env.c:116:1: note: type mismatch in parameter 1
 __gnat_setenv (char *name, char *value)
 ^

../../gcc/ada/s-os_lib.adb:2717:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Set_Env_Value (Name, Value : System.Address);
                 ^

../../gcc/ada/env.c:116:1: note: ‘__gnat_setenv’ was previously declared here
 __gnat_setenv (char *name, char *value)
 ^

../../gcc/ada/s-os_lib.adb:1231:17: warning: type of ‘system__os_lib__getenv__get_env_value_ptr’ does not match original declaration [-Wlto-type-mismatch]
       procedure Get_Env_Value_Ptr (Name, Length, Ptr : Address);
                 ^

../../gcc/ada/env.c:91:1: note: type mismatch in parameter 1
 __gnat_getenv (char *name, int *len, char **value)
 ^

../../gcc/ada/s-os_lib.adb:1231:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Get_Env_Value_Ptr (Name, Length, Ptr : Address);
                 ^

../../gcc/ada/env.c:91:1: note: ‘__gnat_getenv’ was previously declared here
 __gnat_getenv (char *name, int *len, char **value)
 ^

<built-in>: warning: type of ‘__builtin_strncpy’ does not match original declaration [-Wlto-type-mismatch]
../../gcc/ada/osint.adb:425:20: note: return value type mismatch
          procedure Strncpy (X : Address; Y : Address; Length : Integer);
                    ^

<built-in>: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/osint.adb:425:20: note: ‘osint__add_default_search_dirs__get_libraries_from_registry__strncpy’ was previously declared here
<built-in>: warning: type of ‘__builtin_strlen’ does not match original declaration [-Wlto-type-mismatch]
../../gcc/ada/osint.adb:422:19: note: return value type mismatch
          function Strlen (Str : Address) return Integer;
                   ^

../../gcc/ada/osint.adb:422:19: note: type ‘integer’ should match type ‘long unsigned int’
<built-in>: note: code may be misoptimized unless -fno-strict-aliasing is used
<built-in>: warning: type of ‘__builtin_strlen’ does not match original declaration [-Wlto-type-mismatch]
../../gcc/ada/osint.adb:422:19: note: return value type mismatch
../../gcc/ada/osint.adb:422:19: note: type ‘integer’ should match type ‘long unsigned int’
<built-in>: note: code may be misoptimized unless -fno-strict-aliasing is used
<built-in>: warning: type of ‘__builtin_strlen’ does not match original declaration [-Wlto-type-mismatch]
../../gcc/ada/osint.adb:422:19: note: return value type mismatch
../../gcc/ada/osint.adb:422:19: note: type ‘integer’ should match type ‘long unsigned int’
<built-in>: note: code may be misoptimized unless -fno-strict-aliasing is used
<built-in>: warning: type of ‘__builtin_strlen’ does not match original declaration [-Wlto-type-mismatch]
../../gcc/ada/osint.adb:422:19: note: return value type mismatch
../../gcc/ada/osint.adb:422:19: note: type ‘integer’ should match type ‘long unsigned int’
<built-in>: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/osint.adb:422:19: note: ‘osint__add_default_search_dirs__get_libraries_from_registry__strlen’ was previously declared here
../../gcc/ada/gnatvsn.adb:57:4: warning: type of ‘gnatvsn__version_string’ does not match original declaration [-Wlto-type-mismatch]
    Version_String : char_array (0 .. Ver_Len_Max - 1);
    ^

../../gcc/version.c:34:12: note: array types have different bounds
 const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION;
            ^

../../gcc/version.c:34:12: note: ‘version_string’ was previously declared here
../../gcc/ada/s-os_lib.adb:57:13: warning: type of ‘system__os_lib__copy_attributes’ does not match original declaration [-Wlto-type-mismatch]
    function Copy_Attributes
             ^

../../gcc/ada/adaint.c:2911:1: note: type mismatch in parameter 1
 __gnat_copy_attribs (char *from ATTRIBUTE_UNUSED, char *to ATTRIBUTE_UNUSED,
 ^

../../gcc/ada/s-os_lib.adb:57:13: note: code may be misoptimized unless -fno-strict-aliasing is used
    function Copy_Attributes
             ^

../../gcc/ada/adaint.c:2911:1: note: ‘__gnat_copy_attribs’ was previously declared here
 __gnat_copy_attribs (char *from ATTRIBUTE_UNUSED, char *to ATTRIBUTE_UNUSED,
 ^

../../gcc/ada/osint.adb:3156:16: warning: type of ‘osint__to_host_file_spec__to_host_file_spec’ does not match original declaration [-Wlto-type-mismatch]
       function To_Host_File_Spec (Canonical_File : Address) return Address;
                ^

../../gcc/ada/adaint.c:2854:1: note: return value type mismatch
 __gnat_to_host_file_spec (char *filespec)
 ^

../../gcc/ada/adaint.c:2854:1: note: ‘__gnat_to_host_file_spec’ was previously declared here
../../gcc/ada/osint.adb:3122:16: warning: type of ‘osint__to_host_dir_spec__to_host_dir_spec’ does not match original declaration [-Wlto-type-mismatch]
       function To_Host_Dir_Spec
                ^

../../gcc/ada/adaint.c:2848:1: note: return value type mismatch
 __gnat_to_host_dir_spec (char *dirspec, int prefixflag ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/adaint.c:2848:1: note: ‘__gnat_to_host_dir_spec’ was previously declared here
../../gcc/ada/osint.adb:3088:16: warning: type of ‘osint__to_canonical_path_spec__to_canonical_path_spec’ does not match original declaration [-Wlto-type-mismatch]
       function To_Canonical_Path_Spec (Host_Path : Address) return Address;
                ^

../../gcc/ada/adaint.c:2842:1: note: return value type mismatch
 __gnat_to_canonical_path_spec (char *pathspec)
 ^

../../gcc/ada/adaint.c:2842:1: note: ‘__gnat_to_canonical_path_spec’ was previously declared here
../../gcc/ada/osint.adb:3053:16: warning: type of ‘osint__to_canonical_file_spec__to_canonical_file_spec’ does not match original declaration [-Wlto-type-mismatch]
       function To_Canonical_File_Spec (Host_File : Address) return Address;
                ^

../../gcc/ada/adaint.c:2836:1: note: return value type mismatch
 __gnat_to_canonical_file_spec (char *filespec)
 ^

../../gcc/ada/s-os_lib.adb:2019:16: warning: type of ‘system__os_lib__normalize_pathname__to_canonical_file_spec’ does not match original declaration [-Wlto-type-mismatch]
       function To_Canonical_File_Spec
                ^

../../gcc/ada/adaint.c:2836:1: note: return value type mismatch
 __gnat_to_canonical_file_spec (char *filespec)
 ^

../../gcc/ada/adaint.c:2836:1: note: ‘__gnat_to_canonical_file_spec’ was previously declared here
../../gcc/ada/osint.adb:2955:16: warning: type of ‘osint__to_canonical_dir_spec__to_canonical_dir_spec’ does not match original declaration [-Wlto-type-mismatch]
       function To_Canonical_Dir_Spec
                ^

../../gcc/ada/adaint.c:2830:1: note: return value type mismatch
 __gnat_to_canonical_dir_spec (char *dirspec, int prefixflag ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/adaint.c:2830:1: note: ‘__gnat_to_canonical_dir_spec’ was previously declared here
../../gcc/ada/osint.adb:3002:16: warning: type of ‘osint__to_canonical_file_list__to_canonical_file_list_next’ does not match original declaration [-Wlto-type-mismatch]
       function To_Canonical_File_List_Next return Address;
                ^

../../gcc/ada/adaint.c:2818:1: note: return value type mismatch
 __gnat_to_canonical_file_list_next (void)
 ^

../../gcc/ada/adaint.c:2818:1: note: ‘__gnat_to_canonical_file_list_next’ was previously declared here
../../gcc/ada/osint.adb:2996:16: warning: type of ‘osint__to_canonical_file_list__to_canonical_file_list_init’ does not match original declaration [-Wlto-type-mismatch]
       function To_Canonical_File_List_Init
                ^

../../gcc/ada/adaint.c:2811:1: note: type mismatch in parameter 1
 __gnat_to_canonical_file_list_init (char *dirspec ATTRIBUTE_UNUSED,
 ^

../../gcc/ada/adaint.c:2811:1: note: ‘__gnat_to_canonical_file_list_init’ was previously declared here
../../gcc/ada/s-os_lib.adb:1640:16: warning: type of ‘system__os_lib__locate_exec_on_path__locate_exec_on_path’ does not match original declaration [-Wlto-type-mismatch]
       function Locate_Exec_On_Path (C_Exec_Name : Address) return Address;
                ^

../../gcc/ada/adaint.c:2766:1: note: return value type mismatch
 __gnat_locate_exec_on_path (char *exec_name)
 ^

../../gcc/ada/s-os_lib.adb:1640:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Locate_Exec_On_Path (C_Exec_Name : Address) return Address;
                ^

../../gcc/ada/adaint.c:2766:1: note: ‘__gnat_locate_exec_on_path’ was previously declared here
 __gnat_locate_exec_on_path (char *exec_name)
 ^

../../gcc/ada/s-os_lib.adb:1686:16: warning: type of ‘system__os_lib__locate_regular_file__locate_regular_file__2’ does not match original declaration [-Wlto-type-mismatch]
       function Locate_Regular_File
                ^

../../gcc/ada/adaint.c:2731:1: note: return value type mismatch
 __gnat_locate_regular_file (char *file_name, char *path_val)
 ^

../../gcc/ada/s-os_lib.adb:1686:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Locate_Regular_File
                ^

../../gcc/ada/adaint.c:2731:1: note: ‘__gnat_locate_regular_file’ was previously declared here
 __gnat_locate_regular_file (char *file_name, char *path_val)
 ^

../../gcc/ada/s-os_lib.adb:2977:16: warning: type of ‘system__os_lib__wait_process__portable_wait’ does not match original declaration [-Wlto-type-mismatch]
       function Portable_Wait (S : Address) return Process_Id;
                ^

../../gcc/ada/adaint.c:2588:1: note: type mismatch in parameter 1
 __gnat_portable_wait (int *process_status)
 ^

../../gcc/ada/s-os_lib.adb:2977:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Portable_Wait (S : Address) return Process_Id;
                ^

../../gcc/ada/adaint.c:2588:1: note: ‘__gnat_portable_wait’ was previously declared here
 __gnat_portable_wait (int *process_status)
 ^

../../gcc/ada/s-os_lib.adb:2869:19: warning: type of ‘system__os_lib__spawn_internal__spawn__portable_no_block_spawn’ does not match original declaration [-Wlto-type-mismatch]
          function Portable_No_Block_Spawn (Args : Address) return Process_Id;
                   ^

../../gcc/ada/adaint.c:2550:1: note: type mismatch in parameter 1
 __gnat_portable_no_block_spawn (char *args[] ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/s-os_lib.adb:2869:19: note: code may be misoptimized unless -fno-strict-aliasing is used
          function Portable_No_Block_Spawn (Args : Address) return Process_Id;
                   ^

../../gcc/ada/adaint.c:2550:1: note: ‘__gnat_portable_no_block_spawn’ was previously declared here
 __gnat_portable_no_block_spawn (char *args[] ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/s-os_lib.adb:2866:19: warning: type of ‘system__os_lib__spawn_internal__spawn__portable_spawn’ does not match original declaration [-Wlto-type-mismatch]
          function Portable_Spawn (Args : Address) return Integer;
                   ^

../../gcc/ada/adaint.c:2176:1: note: type mismatch in parameter 1
 __gnat_portable_spawn (char *args[] ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/s-os_lib.adb:2866:19: note: code may be misoptimized unless -fno-strict-aliasing is used
          function Portable_Spawn (Args : Address) return Integer;
                   ^

../../gcc/ada/adaint.c:2176:1: note: ‘__gnat_portable_spawn’ was previously declared here
 __gnat_portable_spawn (char *args[] ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/s-os_lib.adb:1560:16: warning: type of ‘system__os_lib__is_symbolic_link__is_symbolic_link__2’ does not match original declaration [-Wlto-type-mismatch]
       function Is_Symbolic_Link (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:2160:1: note: type mismatch in parameter 1
 __gnat_is_symbolic_link (char *name ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/s-os_lib.adb:1560:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Is_Symbolic_Link (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:2160:1: note: ‘__gnat_is_symbolic_link’ was previously declared here
 __gnat_is_symbolic_link (char *name ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/osint.adb:1772:16: warning: type of ‘osint__is_symbolic_link__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:2139:1: note: type mismatch in parameter 1
 __gnat_is_symbolic_link_attr (char* name ATTRIBUTE_UNUSED,
 ^

../../gcc/ada/osint.adb:1772:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:2139:1: note: ‘__gnat_is_symbolic_link_attr’ was previously declared here
 __gnat_is_symbolic_link_attr (char* name ATTRIBUTE_UNUSED,
 ^

../../gcc/ada/s-os_lib.adb:2658:17: warning: type of ‘system__os_lib__set_non_readable__c_set_non_readable’ does not match original declaration [-Wlto-type-mismatch]
       procedure C_Set_Non_Readable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2118:1: note: type mismatch in parameter 1
 __gnat_set_non_readable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:2658:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure C_Set_Non_Readable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2118:1: note: ‘__gnat_set_non_readable’ was previously declared here
 __gnat_set_non_readable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:2686:17: warning: type of ‘system__os_lib__set_readable__c_set_readable’ does not match original declaration [-Wlto-type-mismatch]
       procedure C_Set_Readable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2097:1: note: type mismatch in parameter 1
 __gnat_set_readable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:2686:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure C_Set_Readable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2097:1: note: ‘__gnat_set_readable’ was previously declared here
 __gnat_set_readable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:2672:17: warning: type of ‘system__os_lib__set_non_writable__c_set_non_writable’ does not match original declaration [-Wlto-type-mismatch]
       procedure C_Set_Non_Writable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2070:1: note: type mismatch in parameter 1
 __gnat_set_non_writable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:2672:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure C_Set_Non_Writable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2070:1: note: ‘__gnat_set_non_writable’ was previously declared here
 __gnat_set_non_writable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:2630:17: warning: type of ‘system__os_lib__set_executable__c_set_executable’ does not match original declaration [-Wlto-type-mismatch]
       procedure C_Set_Executable (Name : C_File_Name; Mode : Integer);
                 ^

../../gcc/ada/adaint.c:2043:1: note: type mismatch in parameter 1
 __gnat_set_executable (char *name, int mode ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/s-os_lib.adb:2630:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure C_Set_Executable (Name : C_File_Name; Mode : Integer);
                 ^

../../gcc/ada/adaint.c:2043:1: note: ‘__gnat_set_executable’ was previously declared here
 __gnat_set_executable (char *name, int mode ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/s-os_lib.adb:2700:17: warning: type of ‘system__os_lib__set_writable__c_set_writable’ does not match original declaration [-Wlto-type-mismatch]
       procedure C_Set_Writable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2014:1: note: type mismatch in parameter 1
 __gnat_set_writable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:2700:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure C_Set_Writable (Name : C_File_Name);
                 ^

../../gcc/ada/adaint.c:2014:1: note: ‘__gnat_set_writable’ was previously declared here
 __gnat_set_writable (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1522:16: warning: type of ‘system__os_lib__is_executable_file__is_executable_file__2’ does not match original declaration [-Wlto-type-mismatch]
       function Is_Executable_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:2005:1: note: type mismatch in parameter 1
 __gnat_is_executable_file (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1522:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Is_Executable_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:2005:1: note: ‘__gnat_is_executable_file’ was previously declared here
 __gnat_is_executable_file (char *name)
 ^

../../gcc/ada/osint.adb:1733:16: warning: type of ‘osint__is_executable_file__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1965:1: note: type mismatch in parameter 1
 __gnat_is_executable_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1733:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1965:1: note: ‘__gnat_is_executable_file_attr’ was previously declared here
 __gnat_is_executable_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/s-os_lib.adb:1579:16: warning: type of ‘system__os_lib__is_writable_file__is_writable_file__2’ does not match original declaration [-Wlto-type-mismatch]
       function Is_Writable_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1956:1: note: type mismatch in parameter 1
 __gnat_is_writable_file (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1579:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Is_Writable_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1956:1: note: ‘__gnat_is_writable_file’ was previously declared here
 __gnat_is_writable_file (char *name)
 ^

../../gcc/ada/osint.adb:1785:16: warning: type of ‘osint__is_writable_file__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1924:1: note: type mismatch in parameter 1
 __gnat_is_writable_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1785:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1924:1: note: ‘__gnat_is_writable_file_attr’ was previously declared here
 __gnat_is_writable_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/s-os_lib.adb:1503:16: warning: type of ‘system__os_lib__is_readable_file__is_readable_file__2’ does not match original declaration [-Wlto-type-mismatch]
       function Is_Readable_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1915:1: note: type mismatch in parameter 1
 __gnat_is_readable_file (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1503:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Is_Readable_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1915:1: note: ‘__gnat_is_readable_file’ was previously declared here
 __gnat_is_readable_file (char *name)
 ^

../../gcc/ada/osint.adb:1746:16: warning: type of ‘osint__is_readable_file__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1887:1: note: type mismatch in parameter 1
 __gnat_is_readable_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1746:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1887:1: note: ‘__gnat_is_readable_file_attr’ was previously declared here
 __gnat_is_readable_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/s-os_lib.adb:1484:16: warning: type of ‘system__os_lib__is_directory__is_directory__2’ does not match original declaration [-Wlto-type-mismatch]
       function Is_Directory (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1688:1: note: type mismatch in parameter 1
 __gnat_is_directory (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1484:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Is_Directory (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1688:1: note: ‘__gnat_is_directory’ was previously declared here
 __gnat_is_directory (char *name)
 ^

../../gcc/ada/osint.adb:1695:16: warning: type of ‘osint__is_directory__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1679:1: note: type mismatch in parameter 1
 __gnat_is_directory_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1695:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1679:1: note: ‘__gnat_is_directory_attr’ was previously declared here
 __gnat_is_directory_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1759:16: warning: type of ‘osint__is_regular_file__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1651:1: note: type mismatch in parameter 1
 __gnat_is_regular_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1759:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal (N : C_File_Name; A : System.Address) return Integer;
                ^

../../gcc/ada/adaint.c:1651:1: note: ‘__gnat_is_regular_file_attr’ was previously declared here
 __gnat_is_regular_file_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/s-os_lib.adb:1471:16: warning: type of ‘system__os_lib__is_absolute_path__is_absolute_path’ does not match original declaration [-Wlto-type-mismatch]
       function Is_Absolute_Path
                ^

../../gcc/ada/adaint.c:1616:1: note: type mismatch in parameter 1
 __gnat_is_absolute_path (char *name, int length)
 ^

../../gcc/ada/s-os_lib.adb:1471:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Is_Absolute_Path
                ^

../../gcc/ada/adaint.c:1616:1: note: ‘__gnat_is_absolute_path’ was previously declared here
 __gnat_is_absolute_path (char *name, int length)
 ^

../../gcc/ada/s-os_lib.adb:1541:16: warning: type of ‘system__os_lib__is_regular_file__is_regular_file__2’ does not match original declaration [-Wlto-type-mismatch]
       function Is_Regular_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1660:1: note: type mismatch in parameter 1
 __gnat_is_regular_file (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1541:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Is_Regular_File (Name : Address) return Integer;
                ^

../../gcc/ada/adaint.c:1660:1: note: ‘__gnat_is_regular_file’ was previously declared here
 __gnat_is_regular_file (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1071:16: warning: type of ‘system__os_lib__file_time_stamp__file_time__3’ does not match original declaration [-Wlto-type-mismatch]
       function File_Time (Name : Address) return OS_Time;
                ^

../../gcc/ada/adaint.c:1370:1: note: type mismatch in parameter 1
 __gnat_file_time_name (char *name)
 ^

../../gcc/ada/s-os_lib.adb:1071:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function File_Time (Name : Address) return OS_Time;
                ^

../../gcc/ada/adaint.c:1370:1: note: ‘__gnat_file_time_name’ was previously declared here
 __gnat_file_time_name (char *name)
 ^

../../gcc/ada/osint.adb:1105:16: warning: type of ‘osint__file_time_stamp__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal (N : C_File_Name; A : System.Address) return OS_Time;
                ^

../../gcc/ada/adaint.c:1349:1: note: type mismatch in parameter 1
 __gnat_file_time_name_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1105:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal (N : C_File_Name; A : System.Address) return OS_Time;
                ^

../../gcc/ada/adaint.c:1349:1: note: ‘__gnat_file_time_name_attr’ was previously declared here
 __gnat_file_time_name_attr (char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1083:16: warning: type of ‘osint__file_length__internal’ does not match original declaration [-Wlto-type-mismatch]
       function Internal
                ^

../../gcc/ada/adaint.c:1088:1: note: type mismatch in parameter 2
 __gnat_file_length_attr (int fd, char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:1083:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Internal
                ^

../../gcc/ada/adaint.c:1088:1: note: ‘__gnat_file_length_attr’ was previously declared here
 __gnat_file_length_attr (int fd, char* name, struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:418:19: warning: type of ‘osint__add_default_search_dirs__get_libraries_from_registry__c_get_libraries_from_registry’ does not match original declaration [-Wlto-type-mismatch]
          function C_Get_Libraries_From_Registry return Address;
                   ^

../../gcc/ada/adaint.c:1458:1: note: return value type mismatch
 __gnat_get_libraries_from_registry (void)
 ^

../../gcc/ada/osint.adb:418:19: note: code may be misoptimized unless -fno-strict-aliasing is used
          function C_Get_Libraries_From_Registry return Address;
                   ^

../../gcc/ada/adaint.c:1458:1: note: ‘__gnat_get_libraries_from_registry’ was previously declared here
 __gnat_get_libraries_from_registry (void)
 ^

../../gcc/ada/s-os_lib.adb:2644:17: warning: type of ‘system__os_lib__set_file_last_modify_time_stamp__c_set_file_time’ does not match original declaration [-Wlto-type-mismatch]
       procedure C_Set_File_Time (Name : C_File_Name; Time : OS_Time);
                 ^

../../gcc/ada/adaint.c:1407:1: note: type mismatch in parameter 1
 __gnat_set_file_time_name (char *name, time_t time_stamp)
 ^

../../gcc/ada/s-os_lib.adb:2644:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure C_Set_File_Time (Name : C_File_Name; Time : OS_Time);
                 ^

../../gcc/ada/adaint.c:1407:1: note: ‘__gnat_set_file_time_name’ was previously declared here
 __gnat_set_file_time_name (char *name, time_t time_stamp)
 ^

../../gcc/ada/s-os_lib.adb:800:16: warning: type of ‘system__os_lib__create_temp_file__open_new_temp’ does not match original declaration [-Wlto-type-mismatch]
       function Open_New_Temp
                ^

../../gcc/ada/adaint.c:980:1: note: type mismatch in parameter 1
 __gnat_open_new_temp (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:800:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Open_New_Temp
                ^

../../gcc/ada/adaint.c:980:1: note: ‘__gnat_open_new_temp’ was previously declared here
 __gnat_open_new_temp (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:757:16: warning: type of ‘system__os_lib__create_new_file__c_create_new_file__2’ does not match original declaration [-Wlto-type-mismatch]
       function C_Create_New_File
                ^

../../gcc/ada/adaint.c:955:1: note: type mismatch in parameter 1
 __gnat_open_new (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:757:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function C_Create_New_File
                ^

../../gcc/ada/adaint.c:955:1: note: ‘__gnat_open_new’ was previously declared here
 __gnat_open_new (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:2455:16: warning: type of ‘system__os_lib__open_append__c_open_append__2’ does not match original declaration [-Wlto-type-mismatch]
       function C_Open_Append
                ^

../../gcc/ada/adaint.c:930:1: note: type mismatch in parameter 1
 __gnat_open_append (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:2455:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function C_Open_Append
                ^

../../gcc/ada/adaint.c:930:1: note: ‘__gnat_open_append’ was previously declared here
 __gnat_open_append (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:857:19: warning: type of ‘system__os_lib__create_temp_file_internal__create_new_output_text_file__c_create_file’ does not match original declaration [-Wlto-type-mismatch]
          function C_Create_File (Name : C_File_Name) return File_Descriptor;
                   ^

../../gcc/ada/adaint.c:912:1: note: type mismatch in parameter 1
 __gnat_create_output_file_new (char *path)
 ^

../../gcc/ada/s-os_lib.adb:857:19: note: code may be misoptimized unless -fno-strict-aliasing is used
          function C_Create_File (Name : C_File_Name) return File_Descriptor;
                   ^

../../gcc/ada/adaint.c:912:1: note: ‘__gnat_create_output_file_new’ was previously declared here
 __gnat_create_output_file_new (char *path)
 ^

../../gcc/ada/s-os_lib.adb:781:16: warning: type of ‘system__os_lib__create_output_text_file__c_create_file’ does not match original declaration [-Wlto-type-mismatch]
       function C_Create_File (Name : C_File_Name) return File_Descriptor;
                ^

../../gcc/ada/adaint.c:894:1: note: type mismatch in parameter 1
 __gnat_create_output_file (char *path)
 ^

../../gcc/ada/s-os_lib.adb:781:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function C_Create_File (Name : C_File_Name) return File_Descriptor;
                ^

../../gcc/ada/adaint.c:894:1: note: ‘__gnat_create_output_file’ was previously declared here
 __gnat_create_output_file (char *path)
 ^

../../gcc/ada/s-os_lib.adb:730:16: warning: type of ‘system__os_lib__create_file__c_create_file__2’ does not match original declaration [-Wlto-type-mismatch]
       function C_Create_File
                ^

../../gcc/ada/adaint.c:871:1: note: type mismatch in parameter 1
 __gnat_open_create (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:730:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function C_Create_File
                ^

../../gcc/ada/adaint.c:871:1: note: ‘__gnat_open_create’ was previously declared here
 __gnat_open_create (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:2509:16: warning: type of ‘system__os_lib__open_read_write__c_open_read_write__2’ does not match original declaration [-Wlto-type-mismatch]
       function C_Open_Read_Write
                ^

../../gcc/ada/adaint.c:848:1: note: type mismatch in parameter 1
 __gnat_open_rw (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:2509:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function C_Open_Read_Write
                ^

../../gcc/ada/adaint.c:848:1: note: ‘__gnat_open_rw’ was previously declared here
 __gnat_open_rw (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:2482:16: warning: type of ‘system__os_lib__open_read__c_open_read__2’ does not match original declaration [-Wlto-type-mismatch]
       function C_Open_Read
                ^

../../gcc/ada/adaint.c:817:1: note: type mismatch in parameter 1
 __gnat_open_read (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:2482:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function C_Open_Read
                ^

../../gcc/ada/adaint.c:817:1: note: ‘__gnat_open_read’ was previously declared here
 __gnat_open_read (char *path, int fmode)
 ^

../../gcc/ada/s-os_lib.adb:2585:16: warning: type of ‘system__os_lib__rename_file__rename__2’ does not match original declaration [-Wlto-type-mismatch]
       function rename (From, To : Address) return Integer;
                ^

../../gcc/ada/adaint.c:697:1: note: type mismatch in parameter 1
 __gnat_rename (char *from, char *to)
 ^

../../gcc/ada/s-os_lib.adb:2585:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function rename (From, To : Address) return Integer;
                ^

../../gcc/ada/adaint.c:697:1: note: ‘__gnat_rename’ was previously declared here
 __gnat_rename (char *from, char *to)
 ^

../../gcc/ada/s-crtl.ads:226:13: warning: type of ‘system__crtl__unlink’ does not match original declaration [-Wlto-type-mismatch]
    function unlink (filename : chars) return int;
             ^

../../gcc/ada/adaint.c:680:1: note: type mismatch in parameter 1
 __gnat_unlink (char *path)
 ^

../../gcc/ada/s-crtl.ads:226:13: note: code may be misoptimized unless -fno-strict-aliasing is used
    function unlink (filename : chars) return int;
             ^

../../gcc/ada/adaint.c:680:1: note: ‘__gnat_unlink’ was previously declared here
 __gnat_unlink (char *path)
 ^

../../gcc/ada/s-os_lib.adb:1090:17: warning: type of ‘system__os_lib__get_debuggable_suffix__get_suffix_ptr’ does not match original declaration [-Wlto-type-mismatch]
       procedure Get_Suffix_Ptr (Length, Ptr : Address);
                 ^

../../gcc/ada/adaint.c:645:1: note: type mismatch in parameter 1
 __gnat_get_debuggable_suffix_ptr (int *len, const char **value)
 ^

../../gcc/ada/s-os_lib.adb:1090:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Get_Suffix_Ptr (Length, Ptr : Address);
                 ^

../../gcc/ada/adaint.c:645:1: note: ‘__gnat_get_debuggable_suffix_ptr’ was previously declared here
 __gnat_get_debuggable_suffix_ptr (int *len, const char **value)
 ^

../../gcc/ada/s-os_lib.adb:1113:17: warning: type of ‘system__os_lib__get_executable_suffix__get_suffix_ptr’ does not match original declaration [-Wlto-type-mismatch]
       procedure Get_Suffix_Ptr (Length, Ptr : Address);
                 ^

../../gcc/ada/adaint.c:630:1: note: type mismatch in parameter 1
 __gnat_get_executable_suffix_ptr (int *len, const char **value)
 ^

../../gcc/ada/s-os_lib.adb:1113:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Get_Suffix_Ptr (Length, Ptr : Address);
                 ^

../../gcc/ada/adaint.c:630:1: note: ‘__gnat_get_executable_suffix_ptr’ was previously declared here
 __gnat_get_executable_suffix_ptr (int *len, const char **value)
 ^

../../gcc/ada/s-os_lib.adb:1136:17: warning: type of ‘system__os_lib__get_object_suffix__get_suffix_ptr’ does not match original declaration [-Wlto-type-mismatch]
       procedure Get_Suffix_Ptr (Length, Ptr : Address);
                 ^

../../gcc/ada/adaint.c:615:1: note: type mismatch in parameter 1
 __gnat_get_object_suffix_ptr (int *len, const char **value)
 ^

../../gcc/ada/s-os_lib.adb:1136:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Get_Suffix_Ptr (Length, Ptr : Address);
                 ^

../../gcc/ada/adaint.c:615:1: note: ‘__gnat_get_object_suffix_ptr’ was previously declared here
 __gnat_get_object_suffix_ptr (int *len, const char **value)
 ^

../../gcc/ada/osint.adb:1490:17: warning: type of ‘osint__get_rts_search_dir__get_current_dir’ does not match original declaration [-Wlto-type-mismatch]
       procedure Get_Current_Dir
                 ^

../../gcc/ada/adaint.c:589:1: note: type mismatch in parameter 1
 __gnat_get_current_dir (char *dir, int *length)
 ^

../../gcc/ada/osint.adb:1490:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Get_Current_Dir
                 ^

../../gcc/ada/s-os_lib.adb:1999:17: warning: type of ‘system__os_lib__normalize_pathname__get_current_dir’ does not match original declaration [-Wlto-type-mismatch]
       procedure Get_Current_Dir
                 ^

../../gcc/ada/adaint.c:589:1: note: type mismatch in parameter 1
 __gnat_get_current_dir (char *dir, int *length)
 ^

../../gcc/ada/s-os_lib.adb:1999:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Get_Current_Dir
                 ^

../../gcc/ada/adaint.c:589:1: note: ‘__gnat_get_current_dir’ was previously declared here
 __gnat_get_current_dir (char *dir, int *length)
 ^

../../gcc/ada/s-os_lib.adb:2013:16: warning: type of ‘system__os_lib__normalize_pathname__readlink’ does not match original declaration [-Wlto-type-mismatch]
       function Readlink
                ^

../../gcc/ada/adaint.c:419:1: note: type mismatch in parameter 1
 __gnat_readlink (char *path ATTRIBUTE_UNUSED,
 ^

../../gcc/ada/s-os_lib.adb:2013:16: note: code may be misoptimized unless -fno-strict-aliasing is used
       function Readlink
                ^

../../gcc/ada/adaint.c:419:1: note: ‘__gnat_readlink’ was previously declared here
 __gnat_readlink (char *path ATTRIBUTE_UNUSED,
 ^

../../gcc/ada/s-os_lib.adb:1423:17: warning: type of ‘system__os_lib__gm_time_of__to_os_time’ does not match original declaration [-Wlto-type-mismatch]
       procedure To_OS_Time
                 ^

../../gcc/ada/adaint.c:395:1: note: type mismatch in parameter 1
 __gnat_to_os_time (OS_Time *p_time, int year, int month, int day,
 ^

../../gcc/ada/s-os_lib.adb:1423:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure To_OS_Time
                 ^

../../gcc/ada/adaint.c:395:1: note: ‘__gnat_to_os_time’ was previously declared here
 __gnat_to_os_time (OS_Time *p_time, int year, int month, int day,
 ^

../../gcc/ada/s-os_lib.adb:1364:17: warning: type of ‘system__os_lib__gm_split__to_gm_time’ does not match original declaration [-Wlto-type-mismatch]
       procedure To_GM_Time
                 ^

../../gcc/ada/adaint.c:367:1: note: type mismatch in parameter 1
 __gnat_to_gm_time (OS_Time *p_time, int *p_year, int *p_month, int *p_day,
 ^

../../gcc/ada/s-os_lib.adb:1364:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure To_GM_Time
                 ^

../../gcc/ada/adaint.c:367:1: note: ‘__gnat_to_gm_time’ was previously declared here
 __gnat_to_gm_time (OS_Time *p_time, int *p_year, int *p_month, int *p_day,
 ^

../../gcc/ada/s-os_lib.adb:968:17: warning: type of ‘system__os_lib__current_time_string__current_time_string’ does not match original declaration [-Wlto-type-mismatch]
       procedure Current_Time_String (Time : System.Address);
                 ^

../../gcc/ada/adaint.c:348:1: note: type mismatch in parameter 1
 __gnat_current_time_string (char *result)
 ^

../../gcc/ada/s-os_lib.adb:968:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure Current_Time_String (Time : System.Address);
                 ^

../../gcc/ada/adaint.c:348:1: note: ‘__gnat_current_time_string’ was previously declared here
 __gnat_current_time_string (char *result)
 ^

../../gcc/ada/osint.adb:3305:14: warning: type of ‘osint__reset_file_attributes’ does not match original declaration [-Wlto-type-mismatch]
    procedure Reset_File_Attributes (Attr : System.Address);
              ^

../../gcc/ada/adaint.c:314:1: note: type mismatch in parameter 1
 __gnat_reset_attributes (struct file_attributes* attr)
 ^

../../gcc/ada/osint.adb:3305:14: note: code may be misoptimized unless -fno-strict-aliasing is used
    procedure Reset_File_Attributes (Attr : System.Address);
              ^

../../gcc/ada/adaint.c:314:1: note: ‘__gnat_reset_attributes’ was previously declared here
 __gnat_reset_attributes (struct file_attributes* attr)
 ^

../../gcc/ada/a-except.adb:871:17: warning: type of ‘ada__exceptions__process_raise_exception__builtin_longjmp’ does not match original declaration [-Wlto-type-mismatch]
       procedure builtin_longjmp (buffer : Address; Flag : Integer);
                 ^

../../gcc/ada/raise.c:58:1: note: type mismatch in parameter 1
 _gnat_builtin_longjmp (void *ptr, int flag ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/a-except.adb:871:17: note: code may be misoptimized unless -fno-strict-aliasing is used
       procedure builtin_longjmp (buffer : Address; Flag : Integer);
                 ^

../../gcc/ada/raise.c:58:1: note: ‘_gnat_builtin_longjmp’ was previously declared here
 _gnat_builtin_longjmp (void *ptr, int flag ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/a-exexda.adb:211:13: warning: type of ‘ada__exceptions__exception_data__get_executable_load_addressXn’ does not match original declaration [-Wlto-type-mismatch]
    function Get_Executable_Load_Address return System.Address;
             ^

../../gcc/ada/adaint.c:3179:1: note: return value type mismatch
 __gnat_get_executable_load_address (void)
 ^

../../gcc/ada/adaint.c:3179:1: note: ‘__gnat_get_executable_load_address’ was previously declared here
../../gcc/ada/init.c:94:13: warning: type of ‘ada__exceptions__raise_from_signal_handler’ does not match original declaration [-Wlto-type-mismatch]
 extern void Raise_From_Signal_Handler (struct Exception_Data *, const char *);
             ^

../../gcc/ada/a-except.adb:1060:4: note: type mismatch in parameter 2
    procedure Raise_From_Signal_Handler
    ^

../../gcc/ada/init.c:94:13: note: code may be misoptimized unless -fno-strict-aliasing is used
 extern void Raise_From_Signal_Handler (struct Exception_Data *, const char *);
             ^

../../gcc/ada/a-except.adb:1060:4: note: ‘ada__exceptions__raise_from_signal_handler’ was previously declared here
    procedure Raise_From_Signal_Handler
    ^

../../gcc/ada/init.c:83:30: warning: type of ‘storage_error’ does not match original declaration [-Wlto-type-mismatch]
 extern struct Exception_Data storage_error;
                              ^

../../gcc/ada/s-stalib.ads:179:4: note: type ‘struct ’ should match type ‘struct Exception_Data’
    Storage_Error_Def : aliased Exception_Data :=
    ^

../../gcc/ada/raise.h:38:8: note: the incompatible type is defined here
 struct Exception_Data
        ^

../../gcc/ada/init.c:83:30: note: code may be misoptimized unless -fno-strict-aliasing is used
 extern struct Exception_Data storage_error;
                              ^

../../gcc/ada/s-stalib.ads:179:4: note: ‘system__standard_library__storage_error_def’ was previously declared here
    Storage_Error_Def : aliased Exception_Data :=
    ^

../../gcc/ada/init.c:82:30: warning: type of ‘program_error’ does not match original declaration [-Wlto-type-mismatch]
 extern struct Exception_Data program_error;
                              ^

../../gcc/ada/s-stalib.ads:170:4: note: type ‘struct ’ should match type ‘struct Exception_Data’
    Program_Error_Def : aliased Exception_Data :=
    ^

../../gcc/ada/raise.h:38:8: note: the incompatible type is defined here
 struct Exception_Data
        ^

../../gcc/ada/init.c:82:30: note: code may be misoptimized unless -fno-strict-aliasing is used
 extern struct Exception_Data program_error;
                              ^

../../gcc/ada/s-stalib.ads:170:4: note: ‘system__standard_library__program_error_def’ was previously declared here
    Program_Error_Def : aliased Exception_Data :=
    ^

../../gcc/ada/init.c:80:30: warning: type of ‘constraint_error’ does not match original declaration [-Wlto-type-mismatch]
 extern struct Exception_Data constraint_error;
                              ^

../../gcc/ada/s-stalib.ads:152:4: note: type ‘struct ’ should match type ‘struct Exception_Data’
    Constraint_Error_Def : aliased Exception_Data :=
    ^

../../gcc/ada/raise.h:38:8: note: the incompatible type is defined here
 struct Exception_Data
        ^

../../gcc/ada/init.c:80:30: note: code may be misoptimized unless -fno-strict-aliasing is used
 extern struct Exception_Data constraint_error;
                              ^

../../gcc/ada/s-stalib.ads:152:4: note: ‘system__standard_library__constraint_error_def’ was previously declared here
    Constraint_Error_Def : aliased Exception_Data :=
    ^

../../gcc/ada/a-comlin.adb:41:14: warning: type of ‘ada__command_line__fill_arg’ does not match original declaration [-Wlto-type-mismatch]
    procedure Fill_Arg (A : System.Address; Arg_Num : Integer);
              ^

../../gcc/ada/argv.c:92:1: note: type mismatch in parameter 1
 __gnat_fill_arg (char *a, int i)
 ^

../../gcc/ada/a-comlin.adb:41:14: note: code may be misoptimized unless -fno-strict-aliasing is used
    procedure Fill_Arg (A : System.Address; Arg_Num : Integer);
              ^

../../gcc/ada/osint.ads:673:14: warning: type of ‘osint__fill_arg’ does not match original declaration [-Wlto-type-mismatch]
    procedure Fill_Arg (A : System.Address; Arg_Num : Integer);
              ^

../../gcc/ada/argv.c:92:1: note: type mismatch in parameter 1
 __gnat_fill_arg (char *a, int i)
 ^

../../gcc/ada/osint.ads:673:14: note: code may be misoptimized unless -fno-strict-aliasing is used
    procedure Fill_Arg (A : System.Address; Arg_Num : Integer);
              ^

../../gcc/ada/osint.ads:673:14: warning: type of ‘osint__fill_arg’ does not match original declaration [-Wlto-type-mismatch]
../../gcc/ada/argv.c:92:1: note: type mismatch in parameter 1
 __gnat_fill_arg (char *a, int i)
 ^

../../gcc/ada/osint.ads:673:14: note: code may be misoptimized unless -fno-strict-aliasing is used
    procedure Fill_Arg (A : System.Address; Arg_Num : Integer);
              ^

../../gcc/ada/argv.c:92:1: note: ‘__gnat_fill_arg’ was previously declared here
 __gnat_fill_arg (char *a, int i)
 ^

ada/b_gnatb.adb:282:17: warning: type of ‘ada_main__main__initialize’ does not match original declaration [-Wlto-type-mismatch]
       procedure Initialize (Addr : System.Address);
                 ^

../../gcc/ada/initialize.c:131:1: note: type mismatch in parameter 1
 __gnat_initialize (void *eh ATTRIBUTE_UNUSED)
 ^

../../gcc/ada/initialize.c:131:1: note: ‘__gnat_initialize’ was previously declared here
ada/b_gnatb.ads:8:4: warning: type of ‘ada_main__gnat_envp’ does not match original declaration [-Wlto-type-mismatch]
    gnat_envp : System.Address;
    ^

ada/b_gnatb.ads:8:4: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/argv.c:65:14: note: ‘gnat_envp’ was previously declared here
 const char **gnat_envp = (const char **) 0;
              ^

ada/b_gnatb.ads:7:4: warning: type of ‘ada_main__gnat_argv’ does not match original declaration [-Wlto-type-mismatch]
    gnat_argv : System.Address;
    ^

ada/b_gnatb.ads:7:4: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/a-comlin.adb:105:7: warning: type of ‘gnat_argv’ does not match original declaration [-Wlto-type-mismatch]
       gnat_argv : System.Address;
       ^

../../gcc/ada/a-comlin.adb:105:7: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/argv.c:64:14: note: ‘gnat_argv’ was previously declared here
 const char **gnat_argv = (const char **) 0;
              ^

ada/b_gnatb.adb:112:7: warning: type of ‘interrupt_states’ does not match original declaration [-Wlto-type-mismatch]
       Interrupt_States : System.Address;
       ^

ada/b_gnatb.adb:112:7: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/init.c:109:7: note: ‘__gl_interrupt_states’ was previously declared here
 char *__gl_interrupt_states              = 0;
       ^

ada/b_gnatb.adb:106:7: warning: type of ‘priority_specific_dispatching’ does not match original declaration [-Wlto-type-mismatch]
       Priority_Specific_Dispatching : System.Address;
       ^

ada/b_gnatb.adb:106:7: note: code may be misoptimized unless -fno-strict-aliasing is used
../../gcc/ada/init.c:107:7: note: ‘__gl_priority_specific_dispatching’ was previously declared here
 char *__gl_priority_specific_dispatching = 0;
       ^

../../gcc/ada/gnatbind.adb: In function ‘gnatbind’:
../../gcc/ada/gnatbind.adb:59:4: warning: ‘total_errors’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    Total_Errors : Nat := 0;
    ^

../../gcc/ada/gnatbind.adb:62:4: warning: ‘total_warnings’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    Total_Warnings : Nat := 0;
    ^

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23  1:24     ` Jan Hubicka
@ 2015-11-23  9:59       ` Arnaud Charlet
  2015-11-23 11:13         ` Eric Botcazou
  0 siblings, 1 reply; 25+ messages in thread
From: Arnaud Charlet @ 2015-11-23  9:59 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: Eric Botcazou, gcc-patches

> I updated the warning to actually check if the TBAA information is in
> conflict
> and silence warnings on allowed type transtions that are not
> useless_type_conversion_p
> (which is needed for Fortran, too). This is list of warnings I get which I
> suppose will need to be adressed.

Most if not all these warnings are cases of System.Address used as void*

So there is indeed no point in trying to fix one or two cases, and we should
instead instruct LTO somehow to treat System.Address is compatible with void*
otherwise we'll run into endless troubles on that since using System.Address
as void* is very common practice in Ada code.

Arno

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23  9:59       ` Arnaud Charlet
@ 2015-11-23 11:13         ` Eric Botcazou
  2015-11-23 11:24           ` Arnaud Charlet
  0 siblings, 1 reply; 25+ messages in thread
From: Eric Botcazou @ 2015-11-23 11:13 UTC (permalink / raw)
  To: Arnaud Charlet; +Cc: gcc-patches, Jan Hubicka

> So there is indeed no point in trying to fix one or two cases, and we should
> instead instruct LTO somehow to treat System.Address is compatible with
> void* otherwise we'll run into endless troubles on that since using
> System.Address as void* is very common practice in Ada code.

Maybe we could apply this special treatment only to the void_ptr subtype of 
Interfaces.C.Extensions and require its use when interfacing with C.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 11:13         ` Eric Botcazou
@ 2015-11-23 11:24           ` Arnaud Charlet
  2015-11-23 12:00             ` Eric Botcazou
  0 siblings, 1 reply; 25+ messages in thread
From: Arnaud Charlet @ 2015-11-23 11:24 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches, Jan Hubicka

> > So there is indeed no point in trying to fix one or two cases, and we should
> > instead instruct LTO somehow to treat System.Address is compatible with
> > void* otherwise we'll run into endless troubles on that since using
> > System.Address as void* is very common practice in Ada code.
> 
> Maybe we could apply this special treatment only to the void_ptr subtype of
> Interfaces.C.Extensions and require its use when interfacing with C.

No, Interfaces.C.Extensions is non portable, so almost no Ada code out there
is using it. As I said, existing Ada code is using System.Address all the time,
so requiring any code change in this area is just a non starter. We'd
rather require that people don't use LTO with Ada rather than tell them to
use Interfaces.C.Extensions, that would be more constructive :-)

Arno

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 11:24           ` Arnaud Charlet
@ 2015-11-23 12:00             ` Eric Botcazou
  2015-11-23 13:35               ` Richard Biener
  0 siblings, 1 reply; 25+ messages in thread
From: Eric Botcazou @ 2015-11-23 12:00 UTC (permalink / raw)
  To: Arnaud Charlet; +Cc: gcc-patches, Jan Hubicka

> No, Interfaces.C.Extensions is non portable, so almost no Ada code out there
> is using it. As I said, existing Ada code is using System.Address all the
> time, so requiring any code change in this area is just a non starter. We'd
> rather require that people don't use LTO with Ada rather than tell them to
> use Interfaces.C.Extensions, that would be more constructive :-)

I see, too bad that Interfaces.C doesn't define something along these lines.

In practice I'm not sure it's a big issue, because presumably it's essentially 
used to interface the C library and AFAIK we don't LTO the C library (yet).
And I presume that, if people start interfacing in Ada with C code doing heavy 
pointer manipulation, we can also point them to Interfaces.C.Pointers. :-)

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 12:00             ` Eric Botcazou
@ 2015-11-23 13:35               ` Richard Biener
  2015-11-23 16:05                 ` Eric Botcazou
  0 siblings, 1 reply; 25+ messages in thread
From: Richard Biener @ 2015-11-23 13:35 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: Arnaud Charlet, GCC Patches, Jan Hubicka

On Mon, Nov 23, 2015 at 12:45 PM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> No, Interfaces.C.Extensions is non portable, so almost no Ada code out there
>> is using it. As I said, existing Ada code is using System.Address all the
>> time, so requiring any code change in this area is just a non starter. We'd
>> rather require that people don't use LTO with Ada rather than tell them to
>> use Interfaces.C.Extensions, that would be more constructive :-)
>
> I see, too bad that Interfaces.C doesn't define something along these lines.
>
> In practice I'm not sure it's a big issue, because presumably it's essentially
> used to interface the C library and AFAIK we don't LTO the C library (yet).
> And I presume that, if people start interfacing in Ada with C code doing heavy
> pointer manipulation, we can also point them to Interfaces.C.Pointers. :-)

But can't you on the GENERIC side drop System.Address to void_ptr_node
again and just not make use of the "heavy lifting" you were talking about?
That is, why is that speciality of System.Address not a Ada FE thing only?

Richard.

> --
> Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 13:35               ` Richard Biener
@ 2015-11-23 16:05                 ` Eric Botcazou
  2015-11-23 16:17                   ` H.J. Lu
  0 siblings, 1 reply; 25+ messages in thread
From: Eric Botcazou @ 2015-11-23 16:05 UTC (permalink / raw)
  To: gcc-patches; +Cc: Richard Biener, Arnaud Charlet, Jan Hubicka

> But can't you on the GENERIC side drop System.Address to void_ptr_node
> again and just not make use of the "heavy lifting" you were talking about?

No "heavy lifting" in this thread, just a heavy machinery in the language. :-)

> That is, why is that speciality of System.Address not a Ada FE thing only?

You mean rewriting System.Address into a pointer when translating to GENERIC?
Yes, I presume that's doable, but I don't see all the consequences right now.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 16:05                 ` Eric Botcazou
@ 2015-11-23 16:17                   ` H.J. Lu
  2015-11-23 16:26                     ` Eric Botcazou
  0 siblings, 1 reply; 25+ messages in thread
From: H.J. Lu @ 2015-11-23 16:17 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: GCC Patches, Richard Biener, Arnaud Charlet, Jan Hubicka

On Mon, Nov 23, 2015 at 8:02 AM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> But can't you on the GENERIC side drop System.Address to void_ptr_node
>> again and just not make use of the "heavy lifting" you were talking about?
>
> No "heavy lifting" in this thread, just a heavy machinery in the language. :-)
>
>> That is, why is that speciality of System.Address not a Ada FE thing only?
>
> You mean rewriting System.Address into a pointer when translating to GENERIC?
> Yes, I presume that's doable, but I don't see all the consequences right now.
>

Will it also fix

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61954

-- 
H.J.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 16:17                   ` H.J. Lu
@ 2015-11-23 16:26                     ` Eric Botcazou
  2015-11-23 16:31                       ` Arnaud Charlet
  2015-11-23 19:05                       ` Jan Hubicka
  0 siblings, 2 replies; 25+ messages in thread
From: Eric Botcazou @ 2015-11-23 16:26 UTC (permalink / raw)
  To: gcc-patches; +Cc: H.J. Lu, Richard Biener, Arnaud Charlet, Jan Hubicka

> Will it also fix
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61954

Yes, probably, as well as the m68k issue, if that's really doable.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 16:26                     ` Eric Botcazou
@ 2015-11-23 16:31                       ` Arnaud Charlet
  2015-11-23 19:05                       ` Jan Hubicka
  1 sibling, 0 replies; 25+ messages in thread
From: Arnaud Charlet @ 2015-11-23 16:31 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches, H.J. Lu, Richard Biener, Jan Hubicka

> > Will it also fix
> > 
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61954
> 
> Yes, probably, as well as the m68k issue, if that's really doable.

Right, that's also why I think it's a more promising approach.
Pretending that system.address is just an unsigned integer is bound to cause
troubles, although handling system.address as a void* in gigi/gcc
is also bound to cause some other troubles at this stage, but I suspect
we'll have to bite the bullet at some point.

Arno

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 16:26                     ` Eric Botcazou
  2015-11-23 16:31                       ` Arnaud Charlet
@ 2015-11-23 19:05                       ` Jan Hubicka
  2015-11-23 22:29                         ` Eric Botcazou
                                           ` (2 more replies)
  1 sibling, 3 replies; 25+ messages in thread
From: Jan Hubicka @ 2015-11-23 19:05 UTC (permalink / raw)
  To: Eric Botcazou
  Cc: gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet, Jan Hubicka

BTW for the LTO type merging issues one could probably just drop those types
and all derivations to alias set 0. But indeed rewriting them to pointers would
be better, especially for ABI compatibility.

The Ada ICE I get is:
Continuing.
+===========================GNAT BUG DETECTED==============================+
| 6.0.0 20151122 (experimental) (x86_64-pc-linux-gnu) Assert_Failure atree.adb:6776|
| Error detected at system.ads:107:4                                       |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.            |
| Use a subject line meaningful to you and us to track the bug.            |
| Include the entire contents of this bug box in the report.               |
| Include the exact command that you entered.                              |
| Also include sources listed below.                                       |
+==========================================================================+

Please include these source files with error report
Note that list may not be accurate in some cases,
so please double check that the problem can still
be reproduced with the set of files listed.
Consider also -gnatd.n switch (see debug.adb).

../../gcc/ada/system.ads
../../gcc/ada/a-except.adb
../../gcc/ada/a-except.ads
../../gcc/ada/ada.ads
../../gcc/ada/s-parame.ads
../../gcc/ada/s-stalib.ads
../../gcc/ada/a-unccon.ads
../../gcc/ada/s-traent.ads
../../gcc/ada/s-excdeb.ads
../../gcc/ada/s-soflin.ads
../../gcc/ada/s-stache.ads
../../gcc/ada/s-stoele.ads

compilation abandoned

(gdb) bt
#0  atree__unchecked_access__set_flag96.part.697.lto_priv.6676 () at ../../gcc/ada/atree.adb:6776
#1  0x0000000001711774 in atree__unchecked_access__set_flag96 (n=<optimized out>, val=<optimized out>) at ../../gcc/ada/atree.adb:6774
#2  0x000000000126a95c in einfo.set_warnings_off (v=<optimized out>, id=0) at ../../gcc/ada/einfo.adb:6435
#3  sem_prag.analyze_pragma () at ../../gcc/ada/sem_prag.adb:22879
#4  0x0000000000989893 in sem.analyze (n=12466) at ../../gcc/ada/sem.adb:456
#5  0x0000000000cac089 in sem_ch3.analyze_declarations (l=-99998775) at ../../gcc/ada/sem_ch3.adb:2323
#6  0x000000000134e4d5 in sem_ch7.analyze_package_specification () at ../../gcc/ada/sem_ch7.adb:1395
#7  0x00000000009898ab in sem.analyze (n=12078) at ../../gcc/ada/sem.adb:450
#8  0x00000000013517d8 in sem_ch7.analyze_package_declaration (n=12875) at ../../gcc/ada/sem_ch7.adb:1006
#9  0x0000000000989e89 in sem.analyze (n=n@entry=12875) at ../../gcc/ada/sem.adb:441
#10 0x0000000000998d6d in sem_ch10.analyze_compilation_unit (n=n@entry=12067) at ../../gcc/ada/sem_ch10.adb:892
#11 0x0000000000989947 in sem.analyze (n=n@entry=12067) at ../../gcc/ada/sem.adb:174
#12 0x000000000099760f in sem.semantics.do_analyze () at ../../gcc/ada/sem.adb:1337
#13 sem.semantics () at ../../gcc/ada/sem.adb:1517
#14 0x0000000000998039 in sem_ch10.analyze_with_clause (n=n@entry=2286) at ../../gcc/ada/sem_ch10.adb:2540
#15 0x0000000000989a7f in sem.analyze (n=n@entry=2286) at ../../gcc/ada/sem.adb:601
#16 0x0000000000991e67 in sem_ch10.analyze_context (n=n@entry=2284) at ../../gcc/ada/sem_ch10.adb:1371
#17 0x0000000000998cb0 in sem_ch10.analyze_compilation_unit (n=n@entry=2284) at ../../gcc/ada/sem_ch10.adb:686
#18 0x0000000000989947 in sem.analyze (n=n@entry=2284) at ../../gcc/ada/sem.adb:174
#19 0x000000000099760f in sem.semantics.do_analyze () at ../../gcc/ada/sem.adb:1337
#20 sem.semantics () at ../../gcc/ada/sem.adb:1517
#21 0x000000000090e5f9 in frontend () at ../../gcc/ada/frontend.adb:408
#22 0x000000000146de0a in _ada_gnat1drv () at ../../gcc/ada/gnat1drv.adb:1029
#23 0x00000000006f579e in gnat_parse_file() [clone .lto_priv.5151] () at ../../gcc/ada/gcc-interface/misc.c:121
#24 0x00000000016f723c in compile_file () at ../../gcc/toplev.c:464
#25 0x000000000068996e in do_compile () at ../../gcc/toplev.c:1951
#26 toplev::main (this=this@entry=0x7fffffffe850, argc=argc@entry=39, argv=argv@entry=0x7fffffffe958) at ../../gcc/toplev.c:2058
#27 0x0000000000688e29 in main (argc=39, argv=0x7fffffffe958) at ../../gcc/main.c:39

If you have any clue how to debug it further, I would be happy to try.
That atree code is real software engineering treat BTW

Honza

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 19:05                       ` Jan Hubicka
@ 2015-11-23 22:29                         ` Eric Botcazou
  2015-11-23 22:53                           ` Jan Hubicka
  2015-12-20  6:54                         ` Jan Hubicka
  2015-12-20 22:20                         ` Eric Botcazou
  2 siblings, 1 reply; 25+ messages in thread
From: Eric Botcazou @ 2015-11-23 22:29 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

> If you have any clue how to debug it further, I would be happy to try.
> That atree code is real software engineering treat BTW

I'll have a look at some point, once things have stabilized a bit.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 22:29                         ` Eric Botcazou
@ 2015-11-23 22:53                           ` Jan Hubicka
  2015-11-23 23:09                             ` Jan Hubicka
  0 siblings, 1 reply; 25+ messages in thread
From: Jan Hubicka @ 2015-11-23 22:53 UTC (permalink / raw)
  To: Eric Botcazou
  Cc: Jan Hubicka, gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

> > If you have any clue how to debug it further, I would be happy to try.
> > That atree code is real software engineering treat BTW
> 
> I'll have a look at some point, once things have stabilized a bit.

OK, I will push out the remaining patches needed to get LTO into a shape to
compile gnat1 and we can try to take a look from that.  It seems that gnat1
was broken with LTO this way at least since GCC 5.

Honza

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 22:53                           ` Jan Hubicka
@ 2015-11-23 23:09                             ` Jan Hubicka
  0 siblings, 0 replies; 25+ messages in thread
From: Jan Hubicka @ 2015-11-23 23:09 UTC (permalink / raw)
  To: Jan Hubicka
  Cc: Eric Botcazou, gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

> > > If you have any clue how to debug it further, I would be happy to try.
> > > That atree code is real software engineering treat BTW
> > 
> > I'll have a look at some point, once things have stabilized a bit.
> 
> OK, I will push out the remaining patches needed to get LTO into a shape to
> compile gnat1 and we can try to take a look from that.  It seems that gnat1
> was broken with LTO this way at least since GCC 5.

I will also try to check if -fno-strict-aliasing or -fno-ipa-icf fixes the issue.

Honza

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 19:05                       ` Jan Hubicka
  2015-11-23 22:29                         ` Eric Botcazou
@ 2015-12-20  6:54                         ` Jan Hubicka
  2015-12-20  8:14                           ` Eric Botcazou
  2015-12-20 22:20                         ` Eric Botcazou
  2 siblings, 1 reply; 25+ messages in thread
From: Jan Hubicka @ 2015-12-20  6:54 UTC (permalink / raw)
  To: Jan Hubicka
  Cc: Eric Botcazou, gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

> BTW for the LTO type merging issues one could probably just drop those types
> and all derivations to alias set 0. But indeed rewriting them to pointers would
> be better, especially for ABI compatibility.
> 
> The Ada ICE I get is:
> Continuing.
> +===========================GNAT BUG DETECTED==============================+
> | 6.0.0 20151122 (experimental) (x86_64-pc-linux-gnu) Assert_Failure atree.adb:6776|
> | Error detected at system.ads:107:4                                       |
> | Please submit a bug report; see http://gcc.gnu.org/bugs.html.            |
> | Use a subject line meaningful to you and us to track the bug.            |
> | Include the entire contents of this bug box in the report.               |
> | Include the exact command that you entered.                              |
> | Also include sources listed below.                                       |
> +==========================================================================+

Eric,
I finally got around comitting the DCE patch so mainline lto bootstrap works 
up to this point.  It would be great if you could take a look so we can get
it finally fixed.

Thanks,
Honza

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-12-20  6:54                         ` Jan Hubicka
@ 2015-12-20  8:14                           ` Eric Botcazou
  0 siblings, 0 replies; 25+ messages in thread
From: Eric Botcazou @ 2015-12-20  8:14 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

> I finally got around comitting the DCE patch so mainline lto bootstrap works
> up to this point.

Thanks!

> It would be great if you could take a look so we can get it finally fixed.

Let me commit a couple of Ada patches first and then I'll look into it.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-11-23 19:05                       ` Jan Hubicka
  2015-11-23 22:29                         ` Eric Botcazou
  2015-12-20  6:54                         ` Jan Hubicka
@ 2015-12-20 22:20                         ` Eric Botcazou
  2015-12-21 10:20                           ` Eric Botcazou
  2 siblings, 1 reply; 25+ messages in thread
From: Eric Botcazou @ 2015-12-20 22:20 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

> BTW for the LTO type merging issues one could probably just drop those types
> and all derivations to alias set 0. But indeed rewriting them to pointers
> would be better, especially for ABI compatibility.
> 
> The Ada ICE I get is:
> Continuing.
> +===========================GNAT BUG DETECTED==============================+
> | 6.0.0 20151122 (experimental) (x86_64-pc-linux-gnu) Assert_Failure
> | atree.adb:6776| Error detected at system.ads:107:4                       

It's apparently another bug in the DCE pass.  From:

  <bb 4063>:
  # DEBUG id => e_186
  _11422 = atree__unchecked_access__node4.localalias.3007 (e_186);

  <bb 4064>:
  # DEBUG id => NULL
  # DEBUG n => _11422
  # DEBUG n => NULL
  if (_11422 == 0)
    goto <bb 4097> (<L255>);
  else
    goto <bb 4065>;

in phicprop2, we have in cddce2:

Deleting : if (_11422 == 0)

and then:

  <bb 4094>:
  # DEBUG id => e_186
  _11422 = atree__unchecked_access__node4.localalias.3007 (e_186);

  <bb 4095>:
  # DEBUG id => NULL
  # DEBUG n => _11422
  # DEBUG n => NULL
  # DEBUG id => e_186
  goto <bb 4076>;

which is wrong since it's the only exit of the loop in sem_prag.adb:22878:

                           loop
                              Set_Warnings_Off
                                (E, (Chars (Get_Pragma_Arg (Arg1)) =
                                      Name_Off));

                              --  For OFF case, make entry in warnings off
                              --  pragma table for later processing. But we do
                              --  not do that within an instance, since these
                              --  warnings are about what is needed in the
                              --  template, not an instance of it.

                              if Chars (Get_Pragma_Arg (Arg1)) = Name_Off
                                and then Warn_On_Warnings_Off
                                and then not In_Instance
                              then
                                 Warnings_Off_Pragmas.Append ((N, E, Reason));
                              end if;

                              if Is_Enumeration_Type (E) then
                                 declare
                                    Lit : Entity_Id;
                                 begin
                                    Lit := First_Literal (E);
                                    while Present (Lit) loop
                                       Set_Warnings_Off (Lit);
                                       Next_Literal (Lit);
                                    end loop;
                                 end;
                              end if;

                              exit when No (Homonym (E));
                              E := Homonym (E);
                           end loop;

Note that the change you installed is not exactly the patch you had posted, it 
contains an additional hunk:

@@ -134,7 +137,7 @@ mark_stmt_necessary (gimple *stmt, bool
   gimple_set_plf (stmt, STMT_NECESSARY, true);
   if (add_to_worklist)
     worklist.safe_push (stmt);
-  if (bb_contains_live_stmts && !is_gimple_debug (stmt))
+  if (add_to_worklist && bb_contains_live_stmts && !is_gimple_debug (stmt))
     bitmap_set_bit (bb_contains_live_stmts, gimple_bb (stmt)->index);
 }
 
which is not documented in the installed ChangeLog either.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-12-20 22:20                         ` Eric Botcazou
@ 2015-12-21 10:20                           ` Eric Botcazou
  2015-12-21 14:19                             ` Jan Hubicka
  2015-12-21 14:20                             ` Jan Hubicka
  0 siblings, 2 replies; 25+ messages in thread
From: Eric Botcazou @ 2015-12-21 10:20 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

> It's apparently another bug in the DCE pass.  

But it comes from a stalled ABNORMAL flag after the FRE3 pass so:

Index: tree-ssa-pre.c
===================================================================
--- tree-ssa-pre.c	(revision 231856)
+++ tree-ssa-pre.c	(working copy)
@@ -4128,6 +4128,14 @@ eliminate_dom_walker::before_dom_childre
 		      print_gimple_stmt (dump_file, stmt, 0, 0);
 		    }
 
+		  if (is_gimple_call (stmt)
+		      && stmt_can_make_abnormal_goto (stmt))
+		    {
+		      bitmap_set_bit (need_ab_cleanup, gimple_bb (stmt)-
>index);
+		      if (dump_file && (dump_flags & TDF_DETAILS))
+			fprintf (dump_file, "  Removed AB side-effects.\n");
+		    }
+
 		  pre_stats.eliminations++;
 		  continue;
 		}

is apparently sufficient.  Testing...

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-12-21 10:20                           ` Eric Botcazou
@ 2015-12-21 14:19                             ` Jan Hubicka
  2015-12-21 15:16                               ` Eric Botcazou
  2015-12-21 14:20                             ` Jan Hubicka
  1 sibling, 1 reply; 25+ messages in thread
From: Jan Hubicka @ 2015-12-21 14:19 UTC (permalink / raw)
  To: Eric Botcazou
  Cc: Jan Hubicka, gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

Hi,
the change in my patch was intentional, I forgot to send the email. Sorry for that.
The reason is that labels/predictions/debug statements now go specially though DCE
and are marked as neecessary, but not really handled so (i.e. we can remove conditional
controlling only debug statements).
This can cause an infinite loop.
> > It's apparently another bug in the DCE pass.  
> 
> But it comes from a stalled ABNORMAL flag after the FRE3 pass so:

I suppose the CFG verifier should also catch this.  I wonder how this can lead
to wrong code as opossed to infinite loop?
I can imagine DCE being confused about non-control-flow stmt and conclude the
abnormal path as the path leaving the loop.  I will look into the testcase more.

Thanks for working this out!
Honza
> 
> Index: tree-ssa-pre.c
> ===================================================================
> --- tree-ssa-pre.c	(revision 231856)
> +++ tree-ssa-pre.c	(working copy)
> @@ -4128,6 +4128,14 @@ eliminate_dom_walker::before_dom_childre
>  		      print_gimple_stmt (dump_file, stmt, 0, 0);
>  		    }
>  
> +		  if (is_gimple_call (stmt)
> +		      && stmt_can_make_abnormal_goto (stmt))
> +		    {
> +		      bitmap_set_bit (need_ab_cleanup, gimple_bb (stmt)-
> >index);
> +		      if (dump_file && (dump_flags & TDF_DETAILS))
> +			fprintf (dump_file, "  Removed AB side-effects.\n");
> +		    }
> +
>  		  pre_stats.eliminations++;
>  		  continue;
>  		}
> 
> is apparently sufficient.  Testing...
> 
> -- 
> Eric Botcazou

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-12-21 10:20                           ` Eric Botcazou
  2015-12-21 14:19                             ` Jan Hubicka
@ 2015-12-21 14:20                             ` Jan Hubicka
  1 sibling, 0 replies; 25+ messages in thread
From: Jan Hubicka @ 2015-12-21 14:20 UTC (permalink / raw)
  To: Eric Botcazou
  Cc: Jan Hubicka, gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

H.J.,
also once we get to bootstrapland with Ada and LTO, would be possible to enable
it on the LTO bootstrap tester, so we won't break it again?

Thanks,
Honza

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Fix lto-symtab ICE during Ada LTO bootstrap
  2015-12-21 14:19                             ` Jan Hubicka
@ 2015-12-21 15:16                               ` Eric Botcazou
  0 siblings, 0 replies; 25+ messages in thread
From: Eric Botcazou @ 2015-12-21 15:16 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, H.J. Lu, Richard Biener, Arnaud Charlet

[-- Attachment #1: Type: text/plain, Size: 2530 bytes --]

> I suppose the CFG verifier should also catch this.  I wonder how this can
> lead to wrong code as opossed to infinite loop?
> I can imagine DCE being confused about non-control-flow stmt and conclude
> the abnormal path as the path leaving the loop.  I will look into the
> testcase more.

   <bb 4063>:
   # DEBUG id => e_186
   _11422 = atree__unchecked_access__node4.localalias.3007 (e_186);
 
   <bb 4064>:
   # DEBUG id => NULL
   # DEBUG n => _11422
   # DEBUG n => NULL
   if (_11422 == 0)
     goto <bb 4097> (<L255>);
   else
     goto <bb 4065>;

The next block is:

  <bb 4065>:
  # DEBUG id => e_186
  goto <bb 4046>;

and has the stalled ABNORMAL flag.  This causes the latch edge to be split.

When the PHI node consuming _11422 is processed:

processing: e_186 = PHI <e_7741(4046), _11422(4164)>

the following code is invoked:

          if (aggressive && !degenerate_phi_p (stmt))
            {
              for (k = 0; k < gimple_phi_num_args (stmt); k++)
                {
                  basic_block arg_bb = gimple_phi_arg_edge (phi, k)->src;

          if (gimple_bb (stmt)
              != get_immediate_dominator (CDI_POST_DOMINATORS, arg_bb))
                    {
                      if (!bitmap_bit_p (last_stmt_necessary, arg_bb->index))
                        mark_last_stmt_necessary (arg_bb);
                    }
                  else if (arg_bb != ENTRY_BLOCK_PTR_FOR_FN (cfun)
                           && !bitmap_bit_p (visited_control_parents,
                                         arg_bb->index))
                    mark_control_dependent_edges_necessary (arg_bb, true);
                }
            }

arg_bb is the immediate postdominator of gimple_bb (stmt) so the first 
condition is false.  And the second condition is also false because arg_bb was 
already marked in visited_control_parents from:

      FOR_EACH_LOOP (loop, 0)
        if (!finite_loop_p (loop))
          {
            if (dump_file)
             fprintf (dump_file, "can not prove finiteness of loop %i\n", 
loop->num);
            mark_control_dependent_edges_necessary (loop->latch, false);
          }

I'm not quite sure where the logic goes wrong, but the comment just above the 
first quoted block of code makes one think it is a bit fragile.

In any case, the fixlet I posted was slightly off, so here is the patch I have 
installed as obvious after testing on x86-64/Linux.


	PR tree-optimization/65337
	* tree-ssa-pre.c (eliminate): Also clean up abnormal edges if need be.

-- 
Eric Botcazou

[-- Attachment #2: p.diff --]
[-- Type: text/x-patch, Size: 471 bytes --]

Index: tree-ssa-pre.c
===================================================================
--- tree-ssa-pre.c	(revision 231856)
+++ tree-ssa-pre.c	(working copy)
@@ -4499,6 +4499,8 @@ eliminate (bool do_pre)
 	  unlink_stmt_vdef (stmt);
 	  if (gsi_remove (&gsi, true))
 	    bitmap_set_bit (need_eh_cleanup, bb->index);
+	  if (is_gimple_call (stmt) && stmt_can_make_abnormal_goto (stmt))
+	    bitmap_set_bit (need_ab_cleanup, bb->index);
 	  release_defs (stmt);
 	}
 

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2015-12-21 15:16 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-21 18:35 Fix lto-symtab ICE during Ada LTO bootstrap Jan Hubicka
2015-11-22 14:46 ` Eric Botcazou
2015-11-22 15:17   ` Arnaud Charlet
2015-11-23  1:24     ` Jan Hubicka
2015-11-23  9:59       ` Arnaud Charlet
2015-11-23 11:13         ` Eric Botcazou
2015-11-23 11:24           ` Arnaud Charlet
2015-11-23 12:00             ` Eric Botcazou
2015-11-23 13:35               ` Richard Biener
2015-11-23 16:05                 ` Eric Botcazou
2015-11-23 16:17                   ` H.J. Lu
2015-11-23 16:26                     ` Eric Botcazou
2015-11-23 16:31                       ` Arnaud Charlet
2015-11-23 19:05                       ` Jan Hubicka
2015-11-23 22:29                         ` Eric Botcazou
2015-11-23 22:53                           ` Jan Hubicka
2015-11-23 23:09                             ` Jan Hubicka
2015-12-20  6:54                         ` Jan Hubicka
2015-12-20  8:14                           ` Eric Botcazou
2015-12-20 22:20                         ` Eric Botcazou
2015-12-21 10:20                           ` Eric Botcazou
2015-12-21 14:19                             ` Jan Hubicka
2015-12-21 15:16                               ` Eric Botcazou
2015-12-21 14:20                             ` Jan Hubicka
2015-11-22 18:49   ` Jan Hubicka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).