diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index 427b3409e4f2014fafcbe59d8c2add81c3244af2..9c1ad9e597ec282782061ec88296e84e086c2f6d 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/lib/Driver/ToolChains.cpp
@@ -1818,6 +1818,13 @@ const char *PatmosToolChain::GetForcedPicModel() const {
   return 0;
 }
 
+bool PatmosToolChain::UseFramePointerDefault() const {
+  if (Arg *A = getArgs().getLastArg(options::OPT_O_Group))
+    if (A->getOption().matches(options::OPT_O0))
+      return true;
+  return false;
+}
+
 void PatmosToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
                                                 ArgStringList &CC1Args) const
 {
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
index e8efbe343e2c5299517bb113f7cd611605861394..783ca67a40e46e478a75b1253dd5b54029ce060d 100644
--- a/lib/Driver/ToolChains.h
+++ b/lib/Driver/ToolChains.h
@@ -606,6 +606,10 @@ public:
   }
   virtual bool IsUsingLTODefault() const { return true; }
 
+  virtual bool UseFramePointerDefault() const;
+  virtual bool UseLeafFramePointerDefault() const {
+    return UseFramePointerDefault();
+  }
 
   virtual bool isPICDefault() const { return false; }
   virtual bool isPIEDefault() const { return false; }