On Thu, Jun 20, 2013 at 2:40 PM, Richard Smith <[email protected]> wrote:
> On Thu, Jun 20, 2013 at 1:24 PM, Chandler Carruth <[email protected]> 
> wrote:
>> On Thu, Jun 20, 2013 at 12:13 PM, Argyrios Kyrtzidis <[email protected]>
>> wrote:
>>>
>>> On Jun 20, 2013, at 12:40 AM, Chandler Carruth <[email protected]>
>>> wrote:
>>>
>>>
>>> On Sat, Feb 25, 2012 at 1:38 PM, Argyrios Kyrtzidis <[email protected]>
>>> wrote:
>>>>
>>>> Author: akirtzidis
>>>> Date: Sat Feb 25 15:38:16 2012
>>>> New Revision: 151460
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=151460&view=rev
>>>> Log:
>>>> When evaluating integer expressions handle logical operators outside
>>>> VisitBinaryOperator() to reduce stack pressure for source with huge
>>>> number
>>>> of logical operators.
>>>>
>>>> Fixes rdar://10913206.
>>>>
>>>> Added:
>>>>     cfe/trunk/test/Sema/many-logical-ops.c
>>>
>>>
>>> Argiris, this is the 4th slowest test at almost 20 seconds. It makes me
>>> wonder if the slow part is parsing these logical op expressions or if there
>>> is some other issue.
>>>
>>>
>>> If you do
>>>
>>> $ clang -cc1 test/Sema/many-logical-ops.c
>>>
>>> all the time is spent in SequenceChecker. If I uncomment
>>> "CheckUnsequencedOperations(E)" from Sema::CheckCompletedExpr() there is no
>>> slow down (also why does this run all the time without checking if the
>>> warning is enabled or not ?).
>>>
>>> CC'ing Richard.
>>
>>
>> Thanks for the analysis!
>
> Looks like the problem is that we try to evaluate the LHS of an && to
> determine if we want to inspect the RHS, and each evaluation recurses
> all the way down the chain of &&s on *its* LHS before hitting a leaf
> and finding that it's non-constant, making the complete process
> quadratic.

Fixed in r184489.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to