Module Name: src Committed By: christos Date: Mon Dec 31 18:47:42 UTC 2012
Modified Files: src/external/bsd/pcc/dist/pcc/arch/amd64: local.c Log Message: avoid strict aliasing problems To generate a diff of this commit: cvs rdiff -u -r1.1.1.4 -r1.2 src/external/bsd/pcc/dist/pcc/arch/amd64/local.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/bsd/pcc/dist/pcc/arch/amd64/local.c diff -u src/external/bsd/pcc/dist/pcc/arch/amd64/local.c:1.1.1.4 src/external/bsd/pcc/dist/pcc/arch/amd64/local.c:1.2 --- src/external/bsd/pcc/dist/pcc/arch/amd64/local.c:1.1.1.4 Mon Mar 26 10:26:17 2012 +++ src/external/bsd/pcc/dist/pcc/arch/amd64/local.c Mon Dec 31 13:47:41 2012 @@ -1,5 +1,5 @@ /* Id: local.c,v 1.66 2012/03/23 17:03:09 ragge Exp */ -/* $NetBSD: local.c,v 1.1.1.4 2012/03/26 14:26:17 plunky Exp $ */ +/* $NetBSD: local.c,v 1.2 2012/12/31 18:47:41 christos Exp $ */ /* * Copyright (c) 2008 Michael Shalayeff * Copyright (c) 2003 Anders Magnusson (ra...@ludd.luth.se). @@ -540,10 +540,12 @@ myp2tree(NODE *p) #ifdef mach_amd64 { - /* Do not loose negative zeros */ - long long *llp = (long long *)(&p->n_dcon); - short *ssp = (short *)&llp[1]; - if (*llp == 0 && *ssp == 0) + /* Do not lose negative zeros */ + long long ll[2]; + short ss; + memcpy(ll, &p->n_dcon, sizeof(ll)); + memcpy(&ss, &ll[1], sizeof(ss)); + if (ll[0] == 0 && ss == 0) return; } #else