// RUN: %clang_cc1 -fsyntax-only -verify -Wno-unreachable-code %s

typedef __attribute__(( ext_vector_type(4) )) int int4;

static int4 test1() {
  int4 vec, rv;

  // comparisons to self...
  return vec == vec; // expected-warning{{self-comparison always evaluates to a constant}}
  return vec != vec; // expected-warning{{self-comparison always evaluates to a constant}}
  return vec < vec; // expected-warning{{self-comparison always evaluates to a constant}}
  return vec <= vec; // expected-warning{{self-comparison always evaluates to a constant}}
  return vec > vec; // expected-warning{{self-comparison always evaluates to a constant}}
  return vec >= vec; // expected-warning{{self-comparison always evaluates to a constant}}
}


typedef __attribute__(( ext_vector_type(4) )) float float4;

static int4 test2() {
  float4 vec, rv;

  // comparisons to self.  no warning, they're floats
  return vec == vec; // no-warning
  return vec != vec; // no-warning
  return vec < vec;  // no-warning
  return vec <= vec; // no-warning
  return vec > vec;  // no-warning
  return vec >= vec; // no-warning
}
