diff --git a/test/Coverage/codegen-next.m b/test/Coverage/codegen-next.m
index 74df555d1084be653d8379b4f29d166ad8817084..1a3f05049ffc245eb889e9250d8390cea32d2542 100644
--- a/test/Coverage/codegen-next.m
+++ b/test/Coverage/codegen-next.m
@@ -1,5 +1,7 @@
-// RUN: clang -fnext-runtime -emit-llvm -o %t %s &&
-// RUN: clang -g -fnext-runtime -emit-llvm -o %t %s
-// XFAIL
+// RUN: clang -DIRGENABLE -fnext-runtime -emit-llvm -o %t %s &&
+// RUN: clang -DIRGENABLE -g -fnext-runtime -emit-llvm -o %t %s &&
+
+// FIXME: Remove IRGENABLE when possible.
+// RUN: ! clang -fnext-runtime -emit-llvm -o %t %s
 
 #include "objc-language-features.inc"
diff --git a/test/Coverage/objc-language-features.inc b/test/Coverage/objc-language-features.inc
index e060d032ce673ca25346f8e532738a82f8fbabae..0e6237e012523ca05f017fbdb8d10d87dd5b9022 100644
--- a/test/Coverage/objc-language-features.inc
+++ b/test/Coverage/objc-language-features.inc
@@ -30,11 +30,13 @@
   [super fm0];
 }
 -(void) im0 {
-  char *s0 = __func__;
-  char *s1 = __FUNCTION__;
-  char *s2 = __PRETTY_FUNCTION__;
+  const char *s0 = __func__;
+  const char *s1 = __FUNCTION__;
+  const char *s2 = __PRETTY_FUNCTION__;
   [super im0];
+#ifndef IRGENABLE
   int x = super.p0;
+#endif
 }
 -(void) im1: (int) x, ... {
 }
@@ -50,8 +52,10 @@
 @end
 
 int f0(id x) {
+#ifndef IRGENABLE
   @synchronized(x) {
   }
+#endif
 
   @try {
     @throw x;