diff --git a/src/decompiler/prettyprint.cc b/src/decompiler/prettyprint.cc
index 3e8d18a..6b98d02 100644
--- a/src/decompiler/prettyprint.cc
+++ b/src/decompiler/prettyprint.cc
@@ -174,6 +174,14 @@ void EmitMarkup::tagOp(const string &name,syntax_highlight hl,const PcodeOp *op)
   encoder->closeElement(ELEM_OP);
 }
 
+/// \brief Emit a function noreturn identifier
+///
+/// An identifier string representing  noreturn information of the function is emitted
+void EmitMarkup::tagNoreturn(void)
+{
+  *s << "<noreturn " << highlight[(int4)no_color] << '>' << " noreturn </noreturn>";
+}
+
 void EmitMarkup::tagFuncName(const string &name,syntax_highlight hl,const Funcdata *fd,const PcodeOp *op)
 
 {
@@ -343,6 +351,9 @@ void TokenSplit::print(Emit *emit) const
   case fnam_t:	// tagFuncName
     emit->tagFuncName(tok,hl,ptr_second.fd,op);
     break;
+  case noret_t:
+    emit->tagNoreturn();
+    break;
   case type_t:	// tagType
     emit->tagType(tok,hl,ptr_second.ct);
     break;
@@ -973,6 +984,14 @@ void EmitPrettyPrint::tagFuncName(const string &name,syntax_highlight hl,const F
   scan();
 }
 
+void EmitPrettyPrint::tagNoreturn(void)
+{
+  checkstring();
+  TokenSplit &tok( tokqueue.push() );
+  tok.tagNoreturn();
+  scan();
+}
+
 void EmitPrettyPrint::tagType(const string &name,syntax_highlight hl,const Datatype *ct)
 
 {
diff --git a/src/decompiler/prettyprint.hh b/src/decompiler/prettyprint.hh
index 6e7124c..21f2fdf 100644
--- a/src/decompiler/prettyprint.hh
+++ b/src/decompiler/prettyprint.hh
@@ -469,6 +469,7 @@ public:
   virtual void tagVariable(const string &name,syntax_highlight hl,const Varnode *vn,const PcodeOp *op);
   virtual void tagOp(const string &name,syntax_highlight hl,const PcodeOp *op);
   virtual void tagFuncName(const string &name,syntax_highlight hl,const Funcdata *fd,const PcodeOp *op);
+  virtual void tagNoreturn(void);
   virtual void tagType(const string &name,syntax_highlight hl,const Datatype *ct);
   virtual void tagField(const string &name,syntax_highlight hl,const Datatype *ct,int4 off,const PcodeOp *op);
   virtual void tagComment(const string &name,syntax_highlight hl,const AddrSpace *spc,uintb off);
@@ -514,6 +515,8 @@ public:
     *s << name; }
   virtual void tagFuncName(const string &name,syntax_highlight hl,const Funcdata *fd,const PcodeOp *op) {
     *s << name; }
+  virtual void tagNoreturn(void) {
+    *s << " noreturn ";}
   virtual void tagType(const string &name,syntax_highlight hl,const Datatype *ct) {
     *s << name; }
   virtual void tagField(const string &name,syntax_highlight hl,const Datatype *ct,int4 off,const PcodeOp *op) {
@@ -580,6 +583,7 @@ public:
     vari_t,		///< A variable identifier
     op_t,		///< An operator
     fnam_t,		///< A function identifier
+    noret_t,		///< A function noreturn identifier
     type_t,		///< A data-type identifier
     field_t,		///< A field name for a structured data-type
     comm_t,		///< Part of a comment block
@@ -734,6 +738,10 @@ public:
     tok = name; size = tok.size();
     tagtype=fnam_t; delimtype=tokenstring; hl=h; ptr_second.fd=f; op=o; }
 
+  /// \brief Create a function noreturn identifiertoken
+  void tagNoreturn(void) {
+    tagtype=noret_t; delimtype=tokenstring; }
+
   /// \brief Create a data-type identifier token
   ///
   /// \param name is the character data for the identifier
@@ -1015,6 +1023,7 @@ public:
   virtual void tagVariable(const string &name,syntax_highlight hl,const Varnode *vn,const PcodeOp *op);
   virtual void tagOp(const string &name,syntax_highlight hl,const PcodeOp *op);
   virtual void tagFuncName(const string &name,syntax_highlight hl,const Funcdata *fd,const PcodeOp *op);
+  virtual void tagNoreturn(void);
   virtual void tagType(const string &name,syntax_highlight hl,const Datatype *ct);
   virtual void tagField(const string &name,syntax_highlight hl,const Datatype *ct,int4 off,const PcodeOp *op);
   virtual void tagComment(const string &name,syntax_highlight hl,const AddrSpace *spc,uintb off);
diff --git a/src/decompiler/printc.cc b/src/decompiler/printc.cc
index b2637c1..d7a680c 100644
--- a/src/decompiler/printc.cc
+++ b/src/decompiler/printc.cc
@@ -2512,6 +2512,9 @@ void PrintC::emitFunctionDeclaration(const Funcdata *fd)
   emitSymbolScope(fd->getSymbol());
   emit->tagFuncName(fd->getDisplayName(),EmitMarkup::funcname_color,fd,(PcodeOp *)0);
 
+  if (proto->isNoReturn()) {
+    emit->tagNoreturn();
+  }
   emit->spaces(function_call.spacing,function_call.bump);
   int4 id2 = emit->openParen(OPEN_PAREN);
   emit->spaces(0,function_call.bump);
