[ 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