[LLVMdev] tblgen bug in handling case , switch_on
sanjiv.gupta at microchip.com
Sun Sep 6 23:22:33 PDT 2009
Mikhail Glushenkov wrote:
> Hi Sanjiv,
> On Sun, Sep 6, 2009 at 8:13 PM, Mikhail
> Glushenkov<the.dead.shall.rise at gmail.com> wrote:
>> Hi Sanjiv,
>> On Sun, Sep 6, 2009 at 8:07 PM, Mikhail
>> Glushenkov<the.dead.shall.rise at gmail.com> wrote:
>> [Sorry, the formatting was a bit off]
>>> The following snippet gives the expected behaviour (not tested, but
>>> you should get the idea):
> BTW, your mail has got me thinking about the semantics of 'case',
> which is currently somewhat ambiguous (since it depends on context).
> Probably 'case' should be modified to always mean 'if ... else if ...
> else if ... [...] else ...'
IMO, we shouldn't think in terms of what code the user wants to
generate; The syntax should rather specify what can you do with it. What
code we generate for that syntax is rather immaterial as long as it works.
Having said that, a "tblgen case ..... switch_on" is more like a "C
switch....case" for me, and a if ... elseif...elseif...else is a valid
way to handle it.
Now if we allow nesting, that should work as well.
> and the 'if (...) ... if (...) ... if
> (...) ... [...]' form should be called something like 'match'. That
> would be backwards-incompatible, though.
> What do you think?
Again, if an user wants to check for multiple conditions to be true
before taking some action , we can devise a new construct for doing that.
A match (this)...and ...match(this) ...and match(this)... makes
sense to me.
More information about the llvm-dev