Replace several glsl_type field comparisons with a single pointer comparison

This simplifies the process of matching function parameter types.
More simplifications are probably possible here, but arrays and
structures need to be implemented first.
diff --git a/ir_function.cpp b/ir_function.cpp
index a14b546..1ff5b20 100644
--- a/ir_function.cpp
+++ b/ir_function.cpp
@@ -27,6 +27,11 @@
 int
 type_compare(const glsl_type *a, const glsl_type *b)
 {
+   /* If the types are the same, they trivially match.
+    */
+   if (a == b)
+      return 0;
+
    switch (a->base_type) {
    case GLSL_TYPE_UINT:
    case GLSL_TYPE_INT:
@@ -36,9 +41,6 @@
 	  || (a->matrix_rows != b->matrix_rows))
 	 return -1;
 
-      if (a->base_type == b->base_type)
-	 return 0;
-
       /* There is no implicit conversion to or from bool.
        */
       if ((a->base_type == GLSL_TYPE_BOOL)
@@ -48,14 +50,10 @@
       return 1;
 
    case GLSL_TYPE_SAMPLER:
-      return ((a->sampler_dimensionality == b->sampler_dimensionality)
-	      && (a->sampler_shadow == b->sampler_shadow)
-	      && (a->sampler_array == b->sampler_array)
-	      && (a->sampler_type == b->sampler_type))
-	 ? 0 : -1;
-
    case GLSL_TYPE_STRUCT:
-      return (strcmp(a->name, b->name) == 0) ? 0 : -1;
+      /* Samplers and structures must match exactly.
+       */
+      return -1;
 
    case GLSL_TYPE_ARRAY:
       if ((b->base_type != GLSL_TYPE_ARRAY)