Created On:  15 October 2010

Problem:

Enabling the instrumentation feature would break the code generation for some floating point divides. Instead, it would emit integer divides (you'd see idivs in the disassembly), sometimes resulting in divide by zero errors.

For example, I have the following expression in some code:

        float texcoords[] = { (col (((cellWidth - w) / cellWidth) /
2.0f)) / 16.0f,        (row 1.0f) / 16.0f,
                                (col 1.0f - (((cellWidth - w) /
cellWidth) / 2.0f)) / 16.0f, (row 1.0f) / 16.0f,
                                (col 1.0f - (((cellWidth - w) /
cellWidth) / 2.0f)) / 16.0f, row / 16.0f,
                                (col (((cellWidth - w) / cellWidth)
/ 2.0f)) / 16.0f,        row / 16.0f };

...where cellWidth is 16.0f, col is 3.0f, row is 4.0f, w is 10.0f. 

The array (after instrumentation) is:

-                              texcoords            0x0018f594         float Music
                                [0]          0.00000000          float
                                [1]          0.00000000          float
                                [2]          0.00000000          float
                                [3]          0.00000000          float
                                [4]          0.00000000          float
                                [5]          0.25000000          float
                                Devil          0.00000000          float
                                [7]          0.25000000          float

...which is clearly wrong. 

Resolution:

There is a fix included in DevPartner 10.0 Web Sync 1 which can be downloaded from SupportLine.  This issue is to be documented in DPS 10.0.0 WebSync 1 readme document and DPVC 10.0.0 WebSync 1 readme document as required.