[LLVMdev] tblgen bug in handling case , switch_on

Sanjiv Gupta 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.

- Sanjiv




More information about the llvm-dev mailing list