Intel C++ Itanium(R) Compiler for Itanium(R)-based applications, Version 8.1 Release Notes ---------------------------------------------------------------- Overview -------- The Intel C++ Compiler for Itanium(R)-based applications, Version 8.1, is a compiler for the Intel Itanium(R) Architecture running Microsoft Windows* 2000 or Microsoft Windows* XP. Additional information on this software as well as other Intel software performance products is available at http://developer.intel.com/software/products/index.htm . Known Limitations In Version 8.1 -------------------------------- Default section for the data types: ----------------------------------- Data types of size 8 or less are defined in the short data section. Data types of size greater than 8 bytes are defined in the long data section. The section for the data types can be overridden using pragma section directive. Setjmp.h: --------- Default behavior of setjmp.h is to do fast longjmp() without unwinding the stack frame. To use the longjmp() which unwinds the stack use #include instead #include . Type size_t definition: ----------------------- The type size_t is defined as unsigned __int64 in STDDEF.H. This implies that a variable defined of type size_t will be 64 bits. The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type, with the return value of type size_t, but current compiler limits the definition of any aggregrate to a maximum size of 4G. Known problems in C++ Exception Handling: ----------------------------------------- A re-throw in a nested try block does not work correctly. The re-throw will call the inner catch handler and then will mistakenly call the outer catch handler twice. The following is an example of such cases: #include int i; main() { try { i = 1; try { throw (i); } catch (...) { printf("inner\n"); throw; // Re-throw in nested try does not work correctly } } catch (...) { printf("outer\n"); } } The use of setjmp/longjmp in presence of C++ EH does not work. Duplicate RTTI type descriptors are generated when there are multiple try/catch statements in the same file where the declaration to the same pointer-to-member function declaration appears in more than one catch When inner most catch handler catches by value or reference, the re-throw causes an abnormal program termination. The local object in the inner most catch handler is not destructed. If the inner most catch handler is changed to catch(...), the re-throw will recurse into the inner most catch instead of unwinding to outter most catch. Structured Exception Handling ----------------------------- Most of SEH works except for a special case as described below: Goto from an inner try to outer try/finally does not work. For example: __try { __try { goto L; } __finally { printf("In finally 1\n"); } L: printf ("In try 2\n"); } __finally { printf("In finally 2\n"); } Intel, Pentium, Pentium Pro, Itanium and MMX are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Third-party brands and names are the property of their respective owners. Copyright 1998-2004, Intel Corporation, All Rights Reserved.