I believe there could be an optimization bug with the C2000 compiler, which is removing essential lines of code.
I can’t share the entire CCS project because the code is confidential, so I will post code snippets and share other screen shots to describe the problem.
The source of the problem is shown here. This static inline function is called from a function running at 100HZ on the second core of a TMS320F28379D microcontroller.

This function calls a couple of filter functions that take and structure and input float value and returns a float value that the is then stored in a global variable. For reference, the next following images shows the structure definition, and function call of filter1_input (which is a static inline function).

As shown in the screenshot above, the output of the ”filter_input” function is calculated based on the input float value, and the state parameters that are defined in the filter structure. The output is also stored into a parameter in the filter called "y_n1”, and which will be used in the next calculation that the filter performs. This means that the "y_n1” parameter in the filter structure should be updated every time "filter1_input" is called.
The problem is that the "yn_1" parameter is never being updated for the “lowpassAmpPhase2D" filter structure. When running through the “second_filter_dq_outputs” function continuously, the “yn_1” parameter never updates on “lowpassAmpPhase2D”, but does change on the other filters. The next screen shot shows how the structures look like from the memory viewer.

The red text indicates that that address in memory was recently updated. As shown in the cyan box, there are 32-bits of data that never get updated for lowpasAmpsPhase2D, which is where “y_n1” is. Putting a watchpoint at the address that stores "Y_n1”, it never goes off which indicates that memory value is never updated.
The strangest part of this problem was a fix was found by simply declaring these filter structures in a different order. If you declare lowpasAmpsPhase2D before the other filters, the memory view looks like this:

As shown, lowpassAmpsPhase2D was cleared first, and now its "yn_1” value is being updated. All the other filters are working too, so this simple swap around fixed the bug.
Based on what I have seen, I don’t think the “yn_1” value is being overwritten by a buffer-overflow or some other memory bug, as we should see it updated in the memory view, and a watchpoint to trigger when set to its address. It looks like the instructions for writing to that memory value are missing entirely, which makes me think this could be a compiler bug. Does this look like it could be a compiler bug, or could some other issue that I have not considered?
Additional Information:
Code Composer Studio Version: 12.1.0.00007
Here are the optimization settings used in the project:

