## New Features & Bug Fixes

A list of bug fixes for the compiler and linker can be found in the Symbian_x86_BuildTools_Notes.txt file located in the <Carbide_Install_Dir>\x86Build\Release_Notes directory.

This reference has new and updated topics:

##### 3.2.5 Build 487

- IMPORTANT WINSCW COMPILER change - the WINSCW compiler 3.2.5 build 487 provides new name mangling to support critical exception handling. Without this change an exception can cause a program or system crash. This means that some previously frozen DLLs are no longer backward compatabile with earlier builds.
  The simple solution is to simply rebuild your entire program using the new compiler. To do this you'll want:
  - Developers should update their development environments to the latest compiler build
  - Teams build and test systems must update to use the latest compiler build
  - Report all bugs immediately for resolution
  This is a compatibility break with earlier compiler builds and required for all software going forward. If you are doing development for:
  - S60
  - Symbian ???
- Made "-def_for_structclass on" the default.

##### 3.2.5 Build 486

- Fixed a C file compile error when assigning a DLL import function name to a function pointer.

##### 3.2.5 Build 485

- Fixed a codegen bug when bit field object with post-decrement is used as while loop counter.

##### 3.2.5 Build 482

- Fixed a bad assert flagging false internal compiler error.

##### 3.2.5 Build 481

- Default constructor initialize to zero to comply with C++ standard §5.3.4.15.
- Fixed an issue for bad relocation type in reference to the destructor of an imported class from a DLL.
- Reverted bugfix on the issue around forward declaration in class/struct conflicting with definition, we added a new command line switch -def_for_structclass on, and #pragma def_for_structclass for the picking up the definition instead of forward declaration.

#### Previous releases

- See pragma gcc_extensions for GCC improvements
- See pragma c99 for C99 improvements
- C++ improvements include:
  - Forward Declarations of Arrays of Incomplete Type now supported
  - Vendor Independent C++ ABI support for specific compiler target
- C++ template improvements include:
  - Instantiating a Template now supports the explicit instantiation of non-template members
  - Better Template Conformance support for address of template-id rules
  - The pragma defer_defarg_parsing supports deferred parsing of member functions by default
- “Multibyte and Unicode Support”
- “Getting Environmental Variables” provides support for determining host-specific environmental variables
- If you use a function or type that is marked with a GCC style deprecated attribute, a warning message with line number where the statement occurs will appear.

      int old_fn () __attribute__ ((deprecated));

      int (*fn_ptr)() = old_fn;

      foo.cpp:2:  warning: `old_fn' is deprecated (declared at foo.cpp:1)

- New and newly documented #pragmas include:

array_new_delete | inline_max_size | options | warning
asmpoundcomment | inline_max_total_size | pragma_prepdump | warn_any_ptr_int_conv
asmsemicolcomment | instmgr_file | showmessagenumber | warn_hiddenlocals
debuginline | keepcomments | show_error_filestack | warn_illtokenpasting
defer_defarg_parsing | macro_prepdump | space_prepdump | warn_illunionmembers
errno_name | maxerrorcount | srcrelincludes | warn_missingreturn
flat_include | msg_show_lineref | strictheaderchecking | warn_no_explicit_virtual
fullpath_file | msg_show_realref | store_object_files | warn_undefmacro
inline_bottom_up_once | new_mangler | text_encoding | no_conststringconv
inline_max_auto_size | nosyminline | thread_safe_init |

- New and newly documented x86 #pragmas include:

asm_fixup_dllimports | disableopts
disable_stackalloc | emit_local_scopes
fill_stack | line_trace
mmcalls | overlap_locals
sse | sse2
struct_reg_return | ten_byte_long_double
use_cmov | use_fcmov
volatile_asm | x86_processor

- Information in this manual now uses references to the ISO C and C++ standards instead of Ellis and Stroustrup’s The Annotated C++ Reference Manual (ARM) and Kernighan and Richie’s The C Programming Language (K&R).