sgundapa added a comment.

> Moreover, why can't this determining factor be built into the compiler so the 
> user doesn't even have to bother. That would be a more ideal user experience.

Here is a use case : For the code that stays in TCM, the customer doesn't want 
the data that the code refers to be outside of TCM. As kparzysz mentioned, the 
loads cause a huge latency and is not intended. Disabling table generation is 
the right thing to do here. For code that stays in regular memory,  generating 
tables is far more efficient than a bunch of if-elses.

> As an alternative solution, why not just disable the transformation in 
> SimplifyCFG when -fno-jump-tables is used? The underlying issue seems to be 
> the same (i.e., you want to avoid generating more relocations) and AFAICT 
> that's what -fno-jump-tables is all about.. (Admittedly, I don't know the 
> full history of -fno-jump-tables, so others might disagree with this 
> suggestion.)

Jump tables are not supported by all targets but lookup tables are. Jump tables 
need indirect addressing mode where as a lookup table is just an array of 
values.

This is from "man gcc"
-fno-jump-tables

  Do not use jump tables for switch statements even where it would be more 
efficient than other code generation strategies.  This option is of use in 
conjunction with -fpic or -fPIC for building code that forms part of a
  dynamic linker and cannot reference the address of a jump table.  On some 
targets, jump tables do not require a GOT and this option is not needed.

This will throw some background on why this option was introduced.


https://reviews.llvm.org/D35578



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to