C1X: implement generic selections

As an extension, generic selection support has been added for all
supported languages.  The syntax is the same as for C1X.

llvm-svn: 129554
diff --git a/clang/test/Parser/c1x-generic-selection.c b/clang/test/Parser/c1x-generic-selection.c
new file mode 100644
index 0000000..ee23059
--- /dev/null
+++ b/clang/test/Parser/c1x-generic-selection.c
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -std=c1x -fsyntax-only -verify %s
+
+void foo(void) {
+  _Generic; // expected-error {{expected '('}}
+  (void) _Generic(0); // expected-error {{expected ','}}
+  (void) _Generic(0, void); // expected-error {{expected ':'}}
+  (void) _Generic(0,
+      default: 0,  // expected-note {{previous default generic association is here}}
+      default: 0); // expected-error {{duplicate default generic association}}
+}