1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 <2005> 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 <2005> 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Strict aliasing |
From: | Eric Norum <[email protected]> |
To: | Al-Adwan Ahed <[email protected]> |
Cc: | [email protected] |
Date: | Fri, 18 Feb 2005 15:36:18 -0600 |
<x-tad-bigger>Compiling a Software driver - using gcc 3.4.2 and epics 3.14.6 - gives the following error:</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger>
<x-tad-bigger>../dev1394.c:178: warning: dereferencing type-punned pointer will break strict-aliasing rules</x-tad-bigger>
<x-tad-bigger>../dev1394.c:179: warning: dereferencing type-punned pointer will break strict-aliasing rules</x-tad-bigger>
<x-tad-bigger>../dev1394.c:180: warning: dereferencing type-punned pointer will break strict-aliasing rules</x-tad-bigger>
<x-tad-bigger>../dev1394.c:181: warning: dereferencing type-punned pointer will break strict-aliasing rules</x-tad-bigger>
<x-tad-bigger>../dev1394.c:182: warning: dereferencing type-punned pointer will break strict-aliasing rules</x-tad-bigger>
<x-tad-bigger>../dev1394.c:183: warning: dereferencing type-punned pointer will break strict-aliasing rules</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger>
<x-tad-bigger>Which is related to these lines in my code:</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger>
<x-tad-bigger>##################</x-tad-bigger>
<x-tad-bigger>epicsExportAddress(dset,devAi1394);</x-tad-bigger>
<x-tad-bigger>epicsExportAddress(dset,devAo1394);</x-tad-bigger>
<x-tad-bigger>epicsExportAddress(dset,devStringin1394);</x-tad-bigger>
<x-tad-bigger>epicsExportAddress(dset,devWaveform1394);</x-tad-bigger>
<x-tad-bigger>epicsExportAddress(dset,devMbbi1394);</x-tad-bigger>
<x-tad-bigger>epicsExportAddress(dset,devMbbo1394);</x-tad-bigger>
<x-tad-bigger>##################</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger>
<x-tad-bigger>Expanding the above macros shows no problem:</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger>
<x-tad-bigger>##################</x-tad-bigger>
<x-tad-bigger>extern dset *pvar_dset_devAi1394; dset *pvar_dset_devAi1394 = (dset *)&devAi1394;</x-tad-bigger>
<x-tad-bigger>extern dset *pvar_dset_devAo1394; dset *pvar_dset_devAo1394 = (dset *)&devAo1394;</x-tad-bigger>
<x-tad-bigger>extern dset *pvar_dset_devStringin1394; dset *pvar_dset_devStringin1394 = (dset *)&devStringin1394;</x-tad-bigger>
<x-tad-bigger>extern dset *pvar_dset_devWaveform1394; dset *pvar_dset_devWaveform1394 = (dset *)&devWaveform1394;</x-tad-bigger>
<x-tad-bigger>extern dset *pvar_dset_devMbbi1394; dset *pvar_dset_devMbbi1394 = (dset *)&devMbbi1394;</x-tad-bigger>
<x-tad-bigger>extern dset *pvar_dset_devMbbo1394; dset *pvar_dset_devMbbo1394 = (dset *)&devMbbo1394;</x-tad-bigger>
<x-tad-bigger>##################</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger>
<x-tad-bigger>When I compile using CFLAG= -fno-strict-aliasing, these warnings go away.</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger>
<x-tad-bigger>Any clues?</x-tad-bigger>
Subject: Aliasing, pointer casts and gcc 3.3.To: None <[email protected]>