Re: GCC Warnung dereferencing type-punned pointer
Hi, at 17:05 10.09.03, Ralf Corsepius wrote:
On Wed, 2003-09-10 at 16:09, Vinzent Hoefler wrote:
Hi, at 15:03 10.09.03, Ralf Corsepius wrote:
GCC-3.3.x liefert gelegentlich folgende Warnung:
warning: dereferencing type-punned pointer will break strict-aliasing rules
Was will mir diese Warnung sagen?
Dass Du unanstaendige Dinge tust [...]
somestruct2 *e2; e2 = (somestruct2*) malloc(sizeof(somestruct2)); hash_insert(hash,key1,key2,(void**) &e2); ...
GCC bemeckert die (void**) Casts.
Hmm. Prinzipiell hat er damit wohl recht, da Du damit ja sozusagen den Typ wegcastest, Zugriffe auf die einzelnen Member also gar nicht mehr ueber die eigentliche Struktur stattfinden koennen.
und -fstrict-aliasing eingeschaltet hast. Das habe ich eben nicht explizit eingeschaltet. Es mag sein, dass es der Compiler implizit irgendwo einschaltet, wäre mir aber neu.
Offensichtlich ist das neu. Mir war es bisher auch nicht bekannt. Dann schalte es jetzt halt einfach aus. ;) Vinzent.
Vinzent Hoefler
Offensichtlich ist das neu. Mir war es bisher auch nicht bekannt.
Wird seit 3.3 mit -O2 aktiviert.
Dann schalte es jetzt halt einfach aus. ;)
Warmduscher. Gerade das von Ralf angeführte Beispiel lässt sich mit etwas Fleissarbeit prima anpassen. Und auch die Tricks mit __alias__((may_alias)) oder den Unions sind mit etwas Fleissarbeit zu lösen. Ich würde immer erst mal schauen, ob ich den Code nicht anpassen kann, bevor ich auf mögliche Optimierungen verzichte. Philipp
participants (2)
-
Philipp Thomas
-
Vinzent Hoefler