[cfe-dev] Constant folding in clang

Richard Smith richard at metafoo.co.uk
Tue Mar 5 11:48:09 PST 2013


On Tue, Mar 5, 2013 at 9:56 AM, Giacomo Tagliabue <giacomo.tag at gmail.com>wrote:

> That's a good question indeed. I have to do some examinations over the IR,
> so looking at the AST won't be good for me.
> For example, I am trying to trigger the ConstProp optimization, but I
> don't find a case where this is used.
>

Perhaps you could generate testcases by putting your values into local
variables, and running mem2reg before the optimization pass you want to
investigate?


> And also, I always thought that clang codegeneration was as transparent as
> possible, trying not to interfere with the logic flow of the source code,
> and leaving the optimizations as business for LLVM. I fear that, besides
> this example, clang would do other subtle optimizations. What I would like,
> if it exists, is to use an option to disable them.
>

There is no option to disable constant folding when generating IR. There
are some cases where such constant folding is essential in order to produce
correct IR -- for instance, for globals in C or constexpr variables in C++,
we cannot generate IR which computes the value, we must actually emit the
value itself. In other cases, we could emit the expression as a
non-constant, but the produced IR is generally not intended to preserve any
language-level semantics, so we don't wastefully generate IR we know can be
constant-folded. Additionally, the mechanism we use to generate IR does
some constant folding itself.


> On 5 March 2013 11:51, Richard Smith <richard at metafoo.co.uk> wrote:
>
>>
>> On 5 Mar 2013 09:26, "Giacomo Tagliabue" <giacomo.tag at gmail.com> wrote:
>> >
>> > Hello,
>> > let's say I have this function:
>> >
>> > int main(int argc, char const *argv[])
>> > {
>> >   return 10+1;
>> > }
>> >
>> > When I compile it with -emit-llvm -S I expect that clang doesn't fold
>> my constant, but if I look at the .s file i see
>> >
>> > ret i32 11
>> >
>> > How do I prevent clang to perform folding, or, in general, any kind of
>> optimization?
>>
>> Why do you want this? It's possible you would be better served by
>> examining the AST, not the IR.
>>
>> > Thanks
>> >
>> > _______________________________________________
>> > cfe-dev mailing list
>> > cfe-dev at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>> >
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130305/865e875e/attachment.html>


More information about the cfe-dev mailing list