Fix matching of integer function parameters

This causes the following tests to pass:

    glslparsertest/shaders/function10.frag
diff --git a/ir_function.cpp b/ir_function.cpp
index b6139c4..4d24639 100644
--- a/ir_function.cpp
+++ b/ir_function.cpp
@@ -35,16 +35,18 @@
    switch (a->base_type) {
    case GLSL_TYPE_UINT:
    case GLSL_TYPE_INT:
-   case GLSL_TYPE_FLOAT:
    case GLSL_TYPE_BOOL:
-      if ((a->vector_elements != b->vector_elements)
-	  || (a->matrix_columns != b->matrix_columns))
+      /* There is no implicit conversion to or from integer types or bool.
+       */
+      if ((a->is_integer() != b->is_integer())
+	  || (a->is_boolean() != b->is_boolean()))
 	 return -1;
 
-      /* There is no implicit conversion to or from bool.
-       */
-      if ((a->base_type == GLSL_TYPE_BOOL)
-	  || (b->base_type == GLSL_TYPE_BOOL))
+      /* FALLTHROUGH */
+
+   case GLSL_TYPE_FLOAT:
+      if ((a->vector_elements != b->vector_elements)
+	  || (a->matrix_columns != b->matrix_columns))
 	 return -1;
 
       return 1;