On Jul 19, 2012, at 2:59 PM, Chandler Carruth wrote:
> On Thu, Jul 19, 2012 at 2:16 PM, John McCall <[email protected]> wrote:
> On Jul 19, 2012, at 1:39 PM, Timur Iskhodzhanov wrote:
> >> Otherwise it seems very, very ad-hoc,
> > I do think this is more of a general rule as the same ABCD encoding
> > should be used to fix http://llvm.org/PR13182 too.
> > Maybe I should merge these two fixes into one patch and extract a
> > "mangleCVQualifiers" function? WDYT?
> > I was planning to have this as two separate patches.
> 
> If this is just about mangling CV qualifiers, then that sounds fine.
> How you choose to structures the patches doesn't matter much to me.
> 
> >> which makes me worried that
> >> this it only works for the test cases we've run through it already.
> > That's TDD, right? :)
> 
> TDD is not really appropriate here.  We're not developing to vague
> requirements, we're implementing a spec.  The Chromium build is not
> going to give us complete, or even near-complete, coverage of MSVC's
> mangling scheme.  Fixing just enough to get Chromium to build is not
> going to leave us with a working mangler;  it is going to leave us with
> a mangler that needs to be fixed again, and again, and again, every
> time we push a new project through it (or, for that matter, a new version
> of Chromium).
> 
> You need to be running experiments and trying to look for unifying
> principles behind MSVC's manglings.  Like, you're mangling qualifiers,
> but not when it's a pointer, reference (?!), or builtin type that's qualified?
> Something like that?  That's a rather complicated list of special cases.
> Now, it's possible that there is no fundamental rule here, and that MSVC's
> mangler has logic just as convoluted in it;  if so, fine, the spec's the spec.
> But please do the investigation, looking for corner cases that illustrate
> the general rule, and leave comments and test cases behind you that
> tell us what you've done.
> 
> FWIW, I agree w/ John, but I actually think TDD can get us here, we just need 
> to be a bit more creative with the tests.
> 
> Imagine you start w/ a build failure in Chromium. You realize it has to do 
> with qualifiers, and you have the first test case.
> 
> Now, generate a *comprehensive* set of test cases for how qualifiers impact 
> mangling by varying all of the bits John mentions. You can do this 
> programmatically, and test all of them, and then you'll have test failures 
> which specifically indicate how best to architect the mangling for that 
> entity in order to not just handle a few cases, but to handle the system in 
> general.
> 
> Anyways, what ever the path to getting there is, getting this fundamentally 
> correct and tested across the edge cases and axes in which it can break is 
> the important result. =]

Agreed!

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

Reply via email to