[LLVMdev] [RFC] "noclone" function attribute
Krzysztof Parzyszek
kparzysz at codeaurora.org
Sat Dec 1 08:51:55 PST 2012
On 12/1/2012 10:36 AM, James Molloy wrote:
>
> Either of these methods allow the user to stop LLVM "breaking their IR. I'm aware that the general case with no user help (such as force-inlining, or otherwise controlling function cloning) is a very difficult problem. My intention is that there are no corner cases *with user assistance*. Currently there is no way to stop stuff breaking *even with* user assistance! :)
I'm not against the idea, I was just pointing out that cloning of
functions can create problems.
Here's another thing. Imagine this code:
if (x > 0) {
barrier();
...
} else {
barrier();
...
}
Even though "barrier" may have side-effects, normally, it would be
possible to pull such a call out of the if-the-else statements. This
cannot happen with barriers, so the attribute would also mean
"don't-collapse" (as in "don't collapse multiple calls into one).
Here's another idea: internally translate calls to "barrier" without
arguments into calls to "barrier" with an argument that uniquely
identifies the call. The users wouldn't see it in their sources, and
the compiler/runtime could handle it in its own way.
-Krzysztof
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-dev
mailing list