[llvm] r295000 - [LangRef] Explicitly allow readnone and reaodnly functions to unwind
Sanjoy Das via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 13 15:19:08 PST 2017
Author: sanjoy
Date: Mon Feb 13 17:19:07 2017
New Revision: 295000
URL: http://llvm.org/viewvc/llvm-project?rev=295000&view=rev
Log:
[LangRef] Explicitly allow readnone and reaodnly functions to unwind
Summary:
This change edits the language reference to explicitly allow the
existence of readnone and readonly functions that can throw. Full
discussion at
http://lists.llvm.org/pipermail/llvm-dev/2017-January/108637.html
Reviewers: dberlin, chandlerc, hfinkel, majnemer
Reviewed By: majnemer
Subscribers: majnemer, mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D28740
Modified:
llvm/trunk/docs/LangRef.rst
Modified: llvm/trunk/docs/LangRef.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.rst?rev=295000&r1=294999&r2=295000&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.rst (original)
+++ llvm/trunk/docs/LangRef.rst Mon Feb 13 17:19:07 2017
@@ -1474,8 +1474,10 @@ example:
any mutable state (e.g. memory, control registers, etc) visible to
caller functions. It does not write through any pointer arguments
(including ``byval`` arguments) and never changes any state visible
- to callers. This means that it cannot unwind exceptions by calling
- the ``C++`` exception throwing methods.
+ to callers. This means while it cannot unwind exceptions by calling
+ the ``C++`` exception throwing methods (since they write to memory), there may
+ be non-``C++`` mechanisms that throw exceptions without writing to LLVM
+ visible memory.
On an argument, this attribute indicates that the function does not
dereference that pointer argument, even though it may read or write the
@@ -1487,9 +1489,10 @@ example:
caller functions. It may dereference pointer arguments and read
state that may be set in the caller. A readonly function always
returns the same value (or unwinds an exception identically) when
- called with the same set of arguments and global state. It cannot
- unwind an exception by calling the ``C++`` exception throwing
- methods.
+ called with the same set of arguments and global state. This means while it
+ cannot unwind exceptions by calling the ``C++`` exception throwing methods
+ (since they write to memory), there may be non-``C++`` mechanisms that throw
+ exceptions without writing to LLVM visible memory.
On an argument, this attribute indicates that the function does not write
through this pointer argument, even though it may write to the memory that
More information about the llvm-commits
mailing list