MATLAB: How to avoid temporary variables when using a global signal/data store

code generationdata storeglobalsignalsimulinksimulink coder

I have a data store read from a global signal (ism_io_bus_global). No matter what I name the ougoing stick, I get code that looks similar to the following after code generation.
/* DataStoreRead: '<S2>/ism_io_DSR' */
crap_local_B.crap_name_mb = ism_io_bus_global;
/* ModelReference: '<S2>/func' */
func
(&crap_local_B.crap_name_mb.sub_2.sub_A.field_1,
crap_local_B.crap_name_mb.sub_1.sub_B.sub_x.field_2);
What I want is code that simply calls the next function from the global signal subfields, e.g.
/* ModelReference: '<S2>/func' */
func
(&ism_io_bus_global.sub_2.sub_A.field_1,
ism_io_bus_global.sub_1.sub_B.sub_x.field_2);

Best Answer

Check out this documentation page which talks about how to enable your model with expression folding and minimizing data copies between local and global variables.