Index: lib/Sema/SemaAttr.cpp
===================================================================
--- lib/Sema/SemaAttr.cpp	(revision 182601)
+++ lib/Sema/SemaAttr.cpp	(working copy)
@@ -273,7 +273,14 @@
     Consumer.HandleLinkerOptionPragma(Arg);
     return;
   case PCK_Lib: {
-    Consumer.HandleDependentLibrary(Arg);
+    // If the argument does not end in .lib, automatically add the suffix. This
+    // matches the behavior of MSVC.
+    std::string ArgStr = Arg;
+    StringRef End = Arg.substr( Arg.size() - 4 );
+    if (End.compare_lower(".lib") != 0) {
+      ArgStr += ".lib";
+    }
+    Consumer.HandleDependentLibrary(ArgStr);
     return;
   }
   case PCK_Compiler:
Index: test/CodeGen/pragma-comment.c
===================================================================
--- test/CodeGen/pragma-comment.c	(revision 182601)
+++ test/CodeGen/pragma-comment.c	(working copy)
@@ -3,15 +3,21 @@
 // RUN: %clang_cc1 %s -triple i686-pc-linux -fms-extensions -emit-llvm -o - | FileCheck -check-prefix LINUX %s
 
 #pragma comment(lib, "msvcrt.lib")
+#pragma comment(lib, "kernel32")
+#pragma comment(lib, "USER32.LIB")
 
 #define BAR "2"
 #pragma comment(linker," /bar=" BAR)
 
 // CHECK: !llvm.module.flags = !{!0}
 // CHECK: !0 = metadata !{i32 6, metadata !"Linker Options", metadata ![[link_opts:[0-9]+]]}
-// CHECK: ![[link_opts]] = metadata !{metadata ![[msvcrt:[0-9]+]], metadata ![[bar:[0-9]+]]}
+// CHECK: ![[link_opts]] = metadata !{metadata ![[msvcrt:[0-9]+]], metadata ![[kernel32:[0-9]+]], metadata ![[USER32:[0-9]+]], metadata ![[bar:[0-9]+]]}
 // CHECK: ![[msvcrt]] = metadata !{metadata !"/DEFAULTLIB:msvcrt.lib"}
+// CHECK: ![[kernel32]] = metadata !{metadata !"/DEFAULTLIB:kernel32.lib"}
+// CHECK: ![[USER32]] = metadata !{metadata !"/DEFAULTLIB:USER32.LIB"}
 // CHECK: ![[bar]] = metadata !{metadata !" /bar=2"}
 
 // LINUX: metadata !{metadata !"-lmsvcrt.lib"}
+// LINUX: metadata !{metadata !"-lkernel32.lib"}
+// LINUX: metadata !{metadata !"-lUSER32.LIB"}
 // LINUX: metadata !{metadata !" /bar=2"}
