[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