Index: lib/Sema/SemaDeclAttr.cpp
===================================================================
--- lib/Sema/SemaDeclAttr.cpp	(revision 151225)
+++ lib/Sema/SemaDeclAttr.cpp	(working copy)
@@ -3466,7 +3466,8 @@
   return Attr.getKind() == AttributeList::AT_dllimport ||
          Attr.getKind() == AttributeList::AT_dllexport ||
          Attr.getKind() == AttributeList::AT_uuid ||
-         Attr.getKind() == AttributeList::AT_deprecated;
+         Attr.getKind() == AttributeList::AT_deprecated ||
+         Attr.getKind() == AttributeList::AT_noreturn;
 }
 
 //===----------------------------------------------------------------------===//
Index: test/CodeGen/function-attributes.c
===================================================================
--- test/CodeGen/function-attributes.c	(revision 151121)
+++ test/CodeGen/function-attributes.c	(working copy)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -Os -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -fms-compatibility -Os -o - %s | FileCheck %s
 // CHECK: define signext i8 @f0(i32 %x) nounwind
 // CHECK: define zeroext i8 @f1(i32 %x) nounwind
 // CHECK: define void @f2(i8 signext %x) nounwind
@@ -36,6 +36,12 @@
 void __attribute__((noreturn)) f9_t(void);
 void f9(void) { f9_t(); }
 
+// CHECK: call void @f20_t()
+// CHECK: noreturn
+// CHECK: {
+__declspec(noreturn) void f20_t(void);
+void f20(void) { f20_t(); }
+
 // FIXME: We should be setting nounwind on calls.
 // CHECK: call i32 @f10_t()
 // CHECK: readnone
Index: test/Sema/attr-noreturn.c
===================================================================
--- test/Sema/attr-noreturn.c	(revision 151121)
+++ test/Sema/attr-noreturn.c	(working copy)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
+// RUN: %clang_cc1 -verify -fsyntax-only -fms-compatibility %s
 
 static void (*fp0)(void) __attribute__((noreturn));
 
@@ -33,7 +33,7 @@
 void
 f5 (unsigned long size)
 {
-  
+
 }
 
 // PR2461
@@ -42,3 +42,7 @@
 }
 
 typedef void (*Fun)(void) __attribute__ ((noreturn(2))); // expected-error {{attribute takes no arguments}}
+
+__declspec(noreturn) void f6( void ) {
+	return;  // expected-error {{function 'f6' declared 'noreturn' should not return}}
+}
\ No newline at end of file
