Bulletin number: 373 Products affected: D[45]214[AB] D6214A D7214[ABC] Description: Incorrect code generation for | and nested fn calls Component: icc Date: Thu Oct 10 15:26:20 BST 1991 ----- icc generates incorrect code for the following int g(int a, int b, int c, int d, int e) { return 1; } void f(int p1, int a, int b) { printf("b = %d, should be 20\n", b); } int main(void) { f(g(0, 1, 2, 3, 4) | 6, 10, 20); } The problem is caused because the parameters for f which are passed in workspace (the constant 20 in this case), are written into workspace BEFORE the parameters for g are written into workspace (2, 3, and 4 in this example). So the parameter 2 for g is written over the constant 20. This only occurs when calling a function with parameters passed in workspace when one of the parameters contains the bitwise or operator and one of the operands of the bitwise or contains a call to a function with parameters passed in workspace. There is no known workaround.