[prev in list] [next in list] [prev in thread] [next in thread]
List: cfe-dev
Subject: Re: [cfe-dev] [LLVMdev] !!! 3.2 Release RC2 deadline November 29th
From: John McCall <rjmccall () apple ! com>
Date: 2012-11-28 23:09:23
Message-ID: AE3D30CB-416E-45DA-B594-AB372ECCF6A1 () apple ! com
[Download RAW message or body]
On Nov 28, 2012, at 11:49 AM, David Chisnall <David.Chisnall@cl.cam.ac.uk> =
wrote:
> On 28 Nov 2012, at 19:41, Tanya Lattner wrote:
> =
>> So why isn't this caught by any of the regression testing (testsuite) if=
it nothing above -O1 can be compiled? I assume you mean for your project?
> =
> Any Objective-C on non-Apple platforms that uses cleanups (including thos=
e Clang inserts for blocks) breaks in certain cases with inlining. There a=
re also some cases in C++, and cases in LTO (or using C headers in C++) whe=
n C++ code and C code using __attribute__((cleanup)) are mixed. We have an=
ugly hack in clang that avoids it in the most common case, but there are a=
lmost certainly cases that we are not catching. =
> =
>> I'm trying to understand how large of a problem this is. Ideally, we wan=
t everything we can to get fixed.. but since there is some confusion and de=
bate on this bug, I'm thinking its not a quick or easy fix.
> =
> There is no debate in the bug. The consensus (both in the bug report and=
in-person discussions at the DevMeeting) is that the inliner is doing an o=
bviously wrong thing when it takes a function containing a catchall and one=
containing a cleanup, inlines one into the other, and ends up with one wit=
h just a cleanup. The discussion in the bug report is due to the fact that=
there are probably also some corner cases where the wrong thing happens, b=
ut the inliner bug is the serious one.
I absolutely agree that the inliner seems to be doing the wrong thing on yo=
ur testcases, but IIRC, your testcases were all hand-written IR, and the in=
liner seemed to be doing the right thing for your original source-code test=
case. I don't know of a reason why that should matter, but I'm hesitant to=
call this a release blocker if you can't duplicate this starting from sour=
ce code, because it's possible that the inliner is only broken on "unrealis=
tic" IR =97 which would still definitely be a bug, but not one that should =
hold up the release.
Just to be clear, anything that a major frontend like clang would emit for =
actual source code is ipso facto "realistic". I'm just asking that you fin=
d a way to duplicate with ObjC source, not with hand-written IR.
John.
_______________________________________________
cfe-dev mailing list
cfe-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic