[PATCH] D20116: Add nosideeffects function attribute

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 15 23:40:10 PDT 2016


eli.friedman added a subscriber: eli.friedman.

================
Comment at: docs/LangRef.rst:1386
@@ -1384,1 +1385,3 @@
+    This function attribute indicates that the function has no side effects
+    and can be safely speculated.
 ``nounwind``
----------------
This description needs to be more thorough... "can be safely speculated" is an extremely fuzzy description.  Your commit message says that "divide-by-zero" counts as a side-effect, but that isn't listed here.  Does an infinite loop count as a side-effect?  Can a read from or write to a global?  An argument?  A volatile load?

================
Comment at: utils/TableGen/CodeGenIntrinsics.h:114
@@ +113,3 @@
+      return hasSideEffectsProperty ||
+        (ModRef >= CodeGenIntrinsic::ReadWriteMem && !hasNoSideEffectsProperty);
+    }
----------------
Saying that, for example, memcpy is nosideeffects seems very weird.  "memcpy(0,0,8)" will crash.  The same issue applies to basically any intrinsic that reads from or writes to its arguments.


http://reviews.llvm.org/D20116





More information about the llvm-commits mailing list