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

Reply via email to