1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
2f1c7b48638a3ec78129fee9672ed8e2616e63c9cEli Friedman
3f1c7b48638a3ec78129fee9672ed8e2616e63c9cEli Friedmantypedef const char rchar;
4f1c7b48638a3ec78129fee9672ed8e2616e63c9cEli Friedmanint a(char* a, rchar* b) {
5f1c7b48638a3ec78129fee9672ed8e2616e63c9cEli Friedman  return a-b;
6f1c7b48638a3ec78129fee9672ed8e2616e63c9cEli Friedman}
70804888d9162cfd422925762c161bd80f80358b9Douglas Gregor
80804888d9162cfd422925762c161bd80f80358b9Douglas Gregor// <rdar://problem/6520707>
90804888d9162cfd422925762c161bd80f80358b9Douglas Gregorvoid f0(void (*fp)(void)) {
1013b21be065e9feb0759303bd51b8e8653130f0fbChandler Carruth  int x = fp - fp; // expected-warning{{arithmetic on pointers to the function type 'void (void)' is a GNU extension}}
110804888d9162cfd422925762c161bd80f80358b9Douglas Gregor}
12