[ C frontend ] add support for builtins that take signed and unsigned md types
Mike Stump
mikestump@comcast.net
Fri Jan 20 23:21:00 GMT 2012
unsigned builtins don't always work, as the type matching code can ignore the signed/unsigned variants when searching for a type with a particular mode. This patch fixes this problem. If a type with same unsignededness exists, we prefer it over a type with the same mode, but different unsignededness.
Ok?
2012-01-20 Mike Stump <mikestump@comcast.net>
* c-common.c (c_common_type_for_mode): Match signed/unsigned types
exactly.
Index: c-common.c
===================================================================
*** c-common.c (revision 183357)
--- c-common.c (working copy)
*************** c_common_type_for_mode (enum machine_mod
*** 3089,3094 ****
--- 3089,3099 ----
}
for (t = registered_builtin_types; t; t = TREE_CHAIN (t))
+ if (TYPE_MODE (TREE_VALUE (t)) == mode
+ && !!unsignedp == !!TYPE_UNSIGNED (TREE_VALUE (t)))
+ return TREE_VALUE (t);
+
+ for (t = registered_builtin_types; t; t = TREE_CHAIN (t))
if (TYPE_MODE (TREE_VALUE (t)) == mode)
return TREE_VALUE (t);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gcc-1.diffs.patch
Type: application/octet-stream
Size: 721 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20120120/da8f07b6/attachment.obj>
More information about the Gcc-patches
mailing list