[LLVMdev] tblgen bug in handling case , switch_on

Sanjiv Gupta sanjiv.gupta at microchip.com
Sat Sep 5 12:12:42 PDT 2009


Sanjiv Gupta wrote:
> Hi Mikhail,
>
> What is mentioned in the reference manual is this:
>
>     // Evaluates to "cmdline1" if the option "-A" is provided on the
>     // command line; to "cmdline2" if "-B" is provided;
>     // otherwise to "cmdline3".
>   
>    (case
>         (switch_on "A"), "cmdline1",
>         (switch_on "B"), "cmdline2",
>         (default), "cmdline3")
>  
>
> What is generated is this:
>
>      if (A) {
>        ...
>      }
>    
>      if (B) {
>        ....
>      } else {
>        ....
>      }
>
>    
> IMO, What should be generated is below:
>
>      if (A) {
>        ...
>      } else if (B) {
>        ....
>      } else {
>        ....
>      }
>
> BTW, to give you more details, I am using append_cmd on each switch_on.
>
>
> - Sanjiv
>
> _______________________________________________
>   
Is the patch below ok?

Index: LLVMCConfigurationEmitter.cpp
===================================================================
--- LLVMCConfigurationEmitter.cpp    (revision 80668)
+++ LLVMCConfigurationEmitter.cpp    (working copy)
@@ -1141,6 +1141,7 @@
                                Callback, EmitElseIf, OptDescs, O);
     }
     else {
+      EmitElseIf = true;
       Callback(arg, (std::string(IndentLevel) + Indent1).c_str(), O);
     }
     O << IndentLevel << "}\n";

- Sanjiv

> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>   




More information about the llvm-dev mailing list