* 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).