## 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. For more information visit the WINSCW wiki page.
- 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 a bit field object with post-decrement is used as a while loop counter.

##### 3.2.5 Build 482

- Fixed a bad assert flagging false an internal compiler error.

##### 3.2.5 Build 481

- Default constructor initialized 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).