diff --git a/include/clang/AST/Builtins.def b/include/clang/AST/Builtins.def
index 4d3812f..0016afd 100644
--- a/include/clang/AST/Builtins.def
+++ b/include/clang/AST/Builtins.def
@@ -94,6 +94,8 @@
 BUILTIN(__builtin_va_end, "va&", "n")
 BUILTIN(__builtin_va_copy, "va&a", "n")
 BUILTIN(__builtin_memcpy, "v*v*vC*z", "n")
+BUILTIN(__builtin_return_address, "v*Ui", "n")
+BUILTIN(__builtin_frame_address, "v*Ui", "n")
 // GCC Object size checking builtins
 BUILTIN(__builtin___memcpy_chk, "v*v*vC*zz", "n")
 BUILTIN(__builtin___memmove_chk, "v*v*vC*zz", "n")
diff --git a/include/clang/Basic/DiagnosticKinds.def b/include/clang/Basic/DiagnosticKinds.def
index b5fb1dd..3eb08e4 100644
--- a/include/clang/Basic/DiagnosticKinds.def
+++ b/include/clang/Basic/DiagnosticKinds.def
@@ -1069,4 +1069,7 @@
 DIAG(err_shufflevector_argument_too_large, ERROR,
      "indexes for __builtin_shufflevector must be less than the total number of vector elements")
 
+DIAG(err_stack_const_level, ERROR,
+     "the level argument for a stack address builtin must be constant")
+
 #undef DIAG
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index b1b9996..b9b922a 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -891,6 +891,7 @@
   bool CheckBuiltinCFStringArgument(Expr* Arg);
   bool SemaBuiltinVAStart(CallExpr *TheCall);
   bool SemaBuiltinUnorderedCompare(CallExpr *TheCall);
+  bool SemaBuiltinStackAddress(CallExpr *TheCall);
   Action::ExprResult SemaBuiltinShuffleVector(CallExpr *TheCall);
   void CheckPrintfArguments(CallExpr *TheCall,
                             bool HasVAListArg, unsigned format_idx);
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp
index ce0036e..63c1635 100644
--- a/lib/Sema/SemaChecking.cpp
+++ b/lib/Sema/SemaChecking.cpp
@@ -58,6 +58,11 @@
     if (SemaBuiltinUnorderedCompare(TheCall.get()))
       return true;
     return TheCall.take();
+  case Builtin::BI__builtin_return_address:
+  case Builtin::BI__builtin_frame_address:
+    if (SemaBuiltinStackAddress(TheCall.get()))
+      return true;
+    return TheCall.take();
   case Builtin::BI__builtin_shufflevector:
     return SemaBuiltinShuffleVector(TheCall.get());
   }
@@ -177,7 +182,7 @@
     Diag(TheCall->getArg(1)->getLocStart(), 
          diag::warn_second_parameter_of_va_start_not_last_named_argument);
   return false;
-}  
+}
 
 /// SemaBuiltinUnorderedCompare - Handle functions like __builtin_isgreater and
 /// friends.  This is declared to take (...), so we have to check everything.
@@ -209,6 +214,16 @@
   return false;
 }
 
+bool Sema::SemaBuiltinStackAddress(CallExpr *TheCall) {
+  // The signature for these builtins is exact; the only thing we need
+  // to check is that the argument is a constant.
+  SourceLocation Loc;
+  if (!TheCall->getArg(0)->isIntegerConstantExpr(Context, &Loc)) {
+    return Diag(Loc, diag::err_stack_const_level, TheCall->getSourceRange());
+  }
+  return false;
+}
+
 /// SemaBuiltinShuffleVector - Handle __builtin_shufflevector.
 // This is declared to take (...), so we have to check everything.
 Action::ExprResult Sema::SemaBuiltinShuffleVector(CallExpr *TheCall) {
diff --git a/test/Sema/builtin-stackaddress.c b/test/Sema/builtin-stackaddress.c
new file mode 100644
index 0000000..a828168
--- /dev/null
+++ b/test/Sema/builtin-stackaddress.c
@@ -0,0 +1,16 @@
+// RUN: clang -fsyntax-only -verify %s
+void* a(unsigned x) {
+return __builtin_return_address(0);
+}
+
+void b(unsigned x) {
+return __builtin_return_address(x); // expected-error{{the level argument for a stack address builtin must be constant}}
+}
+
+void* a(unsigned x) {
+return __builtin_frame_address(0);
+}
+
+void b(unsigned x) {
+return __builtin_frame_address(x); // expected-error{{the level argument for a stack address builtin must be constant}}
+}
