Actions
Bug #11790
closed[PATCH] ANSI alias rules fix
Description
line 70 in file regparse.h:
#define SET_NTYPE(node, ntype) (node)->u.base.type = (ntype)
needs to be changed to conform with ANSI alias rules
Line 70 as it is can lead to errors in compiling in regparse.c
line 1143: node = (Node* )FreeNodeList;
line 1144: FreeNodeList = FreeNodeList->next;
line 1581: (node)->u.base.type = (0);
where during compiling line 1581 can be moved ahead of line 1144 since under ANSI aliasing rules, the compiler determines that the statement of "(node)->u.base.type = (0);" does not affect the value of FreeNodeList.
Proposed change in patch is in file regparse.h:
-#define SET_NTYPE(node, ntype) (node)->u.base.type = (ntype)
+#define SET_NTYPE(node, ntype) {int value = ntype; memcpy(&((node)->u.base.type), &value, sizeof((node)->u.base.type));}
Files
Actions
Like0
Like0Like0Like0