MIPS: Mark arguments of __builtin_mips_wrdsp / __builtin_mips_rddsp as a constant expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159910 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Basic/BuiltinsMips.def b/include/clang/Basic/BuiltinsMips.def
index 0ddcd6f..d647e34 100644
--- a/include/clang/Basic/BuiltinsMips.def
+++ b/include/clang/Basic/BuiltinsMips.def
@@ -107,8 +107,8 @@
 BUILTIN(__builtin_mips_extp, "iLLii", "nc")
 BUILTIN(__builtin_mips_extpdp, "iLLii", "nc")
 
-BUILTIN(__builtin_mips_wrdsp, "vii", "nc")
-BUILTIN(__builtin_mips_rddsp, "ii", "nc")
+BUILTIN(__builtin_mips_wrdsp, "viIi", "nc")
+BUILTIN(__builtin_mips_rddsp, "iIi", "nc")
 BUILTIN(__builtin_mips_insv, "iii", "nc")
 BUILTIN(__builtin_mips_bitrev, "ii", "nc")
 BUILTIN(__builtin_mips_packrl_ph, "V2sV2sV2s", "nc")
diff --git a/test/CodeGen/builtins-mips-args.c b/test/CodeGen/builtins-mips-args.c
new file mode 100644
index 0000000..7dc7377
--- /dev/null
+++ b/test/CodeGen/builtins-mips-args.c
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -triple mips-unknown-linux-gnu -fsyntax-only -verify %s
+
+void foo() {
+  // MIPS DSP Rev 1
+
+  int a = 3;
+  __builtin_mips_wrdsp(2052, a);  // expected-error{{argument to '__builtin_mips_wrdsp' must be a constant integer}}
+  __builtin_mips_rddsp(a);        // expected-error{{argument to '__builtin_mips_rddsp' must be a constant integer}}
+}