diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp
index 4c12011..373027b 100644
--- a/lib/CodeGen/CodeGenModule.cpp
+++ b/lib/CodeGen/CodeGenModule.cpp
@@ -207,14 +207,21 @@
     FuncAttrs |= llvm::ParamAttr::NoReturn;
 
   llvm::SmallVector<llvm::ParamAttrsWithIndex, 8> ParamAttrList;
-  if (FuncAttrs)
-    ParamAttrList.push_back(llvm::ParamAttrsWithIndex::get(0, FuncAttrs));
   // Note that there is parallel code in CodeGenFunction::EmitCallExpr
-  bool AggregateReturn = CodeGenFunction::hasAggregateLLVMType(ArgTypes[0]);
-  if (AggregateReturn)
+  unsigned increment = 1;
+  if (CodeGenFunction::hasAggregateLLVMType(ArgTypes[0])) {
     ParamAttrList.push_back(
         llvm::ParamAttrsWithIndex::get(1, llvm::ParamAttr::StructRet));
-  unsigned increment = AggregateReturn ? 2 : 1;
+    ++increment;
+  } else if (ArgTypes[0]->isPromotableIntegerType()) {
+    if (ArgTypes[0]->isSignedIntegerType()) {
+      FuncAttrs |= llvm::ParamAttr::SExt;
+    } else if (ArgTypes[0]->isUnsignedIntegerType()) {
+      FuncAttrs |= llvm::ParamAttr::ZExt;
+    }
+  }
+  if (FuncAttrs)
+    ParamAttrList.push_back(llvm::ParamAttrsWithIndex::get(0, FuncAttrs));
   for (llvm::SmallVector<QualType, 8>::const_iterator i = ArgTypes.begin() + 1,
          e = ArgTypes.end(); i != e; ++i, ++increment) {
     QualType ParamType = *i;
diff --git a/test/CodeGen/function-attributes.c b/test/CodeGen/function-attributes.c
new file mode 100644
index 0000000..bb482a0
--- /dev/null
+++ b/test/CodeGen/function-attributes.c
@@ -0,0 +1,22 @@
+// RUN: clang -emit-llvm -o %t.clang.ll %s &&
+// RUN: %llvmgcc -c --emit-llvm -o - %s | llvm-dis -f -o %t.gcc.ll &&
+// RUN: grep "define" %t.clang.ll | sort > %t.clang.defs &&
+// RUN: grep "define" %t.gcc.ll | sort > %t.gcc.defs &&
+// RUN: diff %t.clang.defs %t.gcc.defs
+
+signed char f0(int x) { return x; }
+
+unsigned char f1(int x) { return x; }
+
+void f2(signed char x) { }
+
+void f3(unsigned char x) { }
+
+signed short f4(int x) { return x; }
+
+unsigned short f5(int x) { return x; }
+
+void f6(signed short x) { }
+
+void f7(unsigned short x) { }
+
