⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diffs.gml

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 GML
📖 第 1 页 / 共 5 页
字号:
.chap *refid=diffs Release Notes for &product &ver..&rev
.*
.np
There are a number of enhancements and changes in this new version of
&product..
The following sections outline most of the major changes.
You should consult the User's Guide for full details on these and
other changes made to the compiler and related tools.
You should check the next section to determine if you need to
recompile your application.
.*
.if '&lang' eq 'C/C++' .do begin
:cmt. Reflects main Perforce branch as of 2006/10/31
:cmt. Good way to get list of changes since certain date:
:cmt. p4 changes -l @yyyy/mm/dd,#head
.*
.*
.section Differences from Open Watcom Version 1.5
.*
.np
Following is a list of changes made in &product 1.6:
.begbull
.bull
The C compiler has been modified to use the underlying bit-field type and
not signed/unsigned int as the type of operand which is a bit-field. This
is consistent with the C++ compiler and fixes some problems when bit-fields
larger than int are used.
.bull
Processing of #pragma aux has been corrected in the C compiler. This fixes
problems when using the mmintrin.h header, among others.
.bull
The C compiler now accepts __declspec modifiers specifying calling conventions
applied to variables, not just functions. The new behavior is consistent with
the C++ compiler, and also with the fact that ordinary calling convention
type modifiers can be used with variables.
.bull
The C and C++ compilers have been fixed to properly declare variable names
based on calling convention specifiers. This fixes problems with building
code using IBM SOM. Note that the current behavior is the same as in Open
Watcom 1.3 and earlier.
.bull
The C compiler's preprocessor has been modified to allow use of macros with
large number of arguments (255 or more).
.bull
The C compiler no longer generates internal errors when options -ri and -oe
are specified at the same time.
.bull
The C++ compiler has been fixed to inline intrinsic functions.
.bull
The 386 compilers have been changed to default to tuning code for P6
architecture instead of Pentium. Optimizing for P6 typically results in
slightly more compact and faster code.
.bull
The 386 C compiler has been fixed to properly convert between flat and
__far16 pointers, especially pointers to functions. Its behavior should
now be compatible with the C++ compiler. The problem was most likely affecting
OS/2 users who wrote mixed 16-bit and 32-bit code.
.bull
The C compiler has been changed to allow redeclaration of functions in rare
cases where initial declaration did not specify a calling convention and
the subsequent declaration specified a calling convention which matched the
default.
.bull
A new -zwf switch has been added to the C and C++ compilers. This switch is
off by default and enables generation of FWAIT instructions on 386 and later
CPUs. It is only needed in unusual situations.
.bull
The C compiler now correctly converts 64-bit integer constants to
floating-point constants.
.bull
The code generator no longer merges memory accesses when volatile variables
are involved.
.bull
The code generator now correctly const folds 64-bit right shifts.
.bull
The code generator now properly converts between far pointers and 64-bit
integers. Attempts to convert a 48-bit far pointer to 64-bit integer no
longer cause a crash.
.bull
The code generator has been modified to slightly decrease code size when
optimizing for size (-os).
.bull
The non-standard alloca.h header has been added for compatibility with other
compilers.
.bull
The strftime() library function has been extended to support date formats
introduced in C99.
.bull
The file pointer type used with lseek() and tell() has been changed to off_t
(from long) for compatibility with POSIX.
.bull
The 386 versions of _clear87() and _status87() functions have been modified
to use the no-wait form of FPU control instructions. This allows these
functions to be used in exception handlers when there are pending unmasked
floating-point exceptions.
.bull
The 16-bit 8087 emulator has been fixed to correctly evaluate multiplies as
infinity instead of zero in rare overflow situations.
.bull
The resource compiler (wrc) has been fixed to store long integer constants as
32-bit quantities in RCDATA or user data resource statements. This behavior
applies to Win16, Win32, and OS/2 targets. Integers without the 'L' suffix
are stored as 16-bit and potentially truncated.
.bull
The OS/2 specific part of the resource compiler has been corrected to process
RCDATA statements properly.
.bull
The assembler (wasm) now supports external absolute symbols. The SIZE, SIZEOF,
LENGTH, and LENGTHOF operators have been corrected for structures.
.bull
Classification of privileged instructions in the assembler has been
updated to match MASM.
.bull
The assembler now evaluates expressions in return instructions correctly.
Previously, code such as 'ret 28+4' would be sometimes erroneously assembled
as 'ret 28' instead of 'ret 32'.
.bull
The linker has been changed to only recognize segments of class 'STACK'
as stack segment. Previously, any segment with class name ending with 'STACK'
(eg. 'FSTACK') was recognized.
.bull
Several minor problems related to creating DOS executables have been fixed
in the linker.
.bull
The RUNTIME linker directive has been extended to allow ELF ABI type and
version specification. This functionality is similar to the brandelf utility.
See the Linker Guide for details.
.bull
The wmake utility has been modified such that in native wmake mode, a
symbolic target with no command list is always considered to have had its
command list executed. That will cause any targets that are dependent on this
symbolic target to be considered out of date.
.bull
The Win32 trap file is now able to determine the full pathname of debuggee's
loaded DLLs. This may ease debugging in some cases as the debugger will be
more likely to find debugging information for DLLs.
.bull
The Win16 debugger trap file (std.dll) has been modified to allow 16-bit wdw
to run on Windows NT platforms without reporting a spurious error message on
exit.
.bull
Numerous problems with the Win386 extender support have been fixed so that
Win386 now works again.
.bull
The dmpobj utility has been ehnanced to support additional OMF records, and
new command line options have been added.
.endbull
.*
.*
.section Differences from Open Watcom Version 1.4
.*
.np
Following is a list of changes made in &product 1.5:
.begbull
.bull
Support for ISO/IEC TR 24731, "Extensions to the C Library, Part I:
Bounds-checking interfaces" has been added to the C runtime library. The C
compiler now predefines the macro __STDC_LIB_EXT1__ (which evaluates to
200509L) to indicate this support. This set of functions is also known as
the Safer C Library. Please see the C Library Reference for detailed
documentation of these functions.
.bull
In C99 mode, the C compiler now supports C99 style declarations intermixed
with statements within a block, as well as declarations in the opening clause
of a for loop.
.bull
The C compiler now predefines additional macros required by the C standards.
These include __STDC_HOSTED__ (evaluates to 1) to indicate a hosted
implementation and __STDC_VERSION__ (either 199409L or 199901L) to indicate
C94 or C99 support depending on compilation switches.
.bull
A __restrict keyword has been added to the C compiler. It is functionally
equivalent to the C99 'restrict' keyword but is always visible, even in
non-C99 mode.
.bull
In C99 mode, the C compiler no longer requires explicit return statement in
a main function returning an integer. In accordance with C99 standard,
'return 0;' is implied if end of function is reached and no return statement
was encountered.
.bull
The C compiler has been fixed so that it no longer loses track of pointer
base when using __based(__self) pointers. The C compiler has also been
fixed to properly handle dereferencing of based arrays.
.bull
The 16-bit C++ compiler now correctly casts pointers to __segment type
without crashing. Proper semantics of the cast were implemented.
.bull
The 16-bit C compiler has also been modified to handle casts to __segment
type correctly, ie. return segment portion of a pointer.
.bull
The C compiler has been fixed to properly support named based segments
(ie. __based( __segname( <name> ) ) pointers) that reference the default
_DATA and _CONST segments.
.bull
The compilers and library headers have been modified to properly support
use of standard libraries when one of the -ec switches is used to change
default calling convention.
.bull
The C compiler has been modified such that segments created through #pragma
data_seg are no longer part of DGROUP. Typically, the pragma is used only
when data segments need to be located in a physically separate segment in
the output module.
.bull
New warning W137, "Extern function 'fn' redeclared as static", has been added
to the C compiler. Existing error E1072, "Storage class disagrees with
previous definition of 'symbol'" has been extended to cover redefinitions
from 'extern' to 'static' and not only from 'static' to 'extern'. Changing
the linkage of a symbol invokes undefined behaviour according to ISO C.
.bull
New warning W138, "No newline at end of file", has been added to the C
compiler. It is emitted if no line terminator character was found before the
end of a source file. Such files do not conform to ISO C. The missing newline
character will be automatically inserted; this matches the C++ compiler
behaviour. Note that missing newlines could previously lead to spurious
"#endif matches #if in different source file" warnings.
.bull
The C compiler has been modified to allow the __export or __declspec(dllexport)
modifier on a declaration when earlier declaration exists with no modifier.
The updated behaviour is compatible with the C++ compiler as well as some
compilers from other vendors.
.bull
In ISO/ANSI mode (-za), the compiler now always warns if it encounters a call
to unprototyped function. In extensions mode (default, -ze), this warning
(W131) is suppressed if a matching prototype is found later in the source
file. Note that the behaviour in extensions mode is unchanged from earlier
versions.
.bull
The C compiler now eliminates static functions that are always inlined from
the object file (the functions are of course still emitted if their address
is taken).
.bull
The C compiler has been fixed to properly evaluate boolean expressions
(especially the ternary operator) where the condition is a 64-bit integer
constant. Previously, the high 32 bits were in some cases ignored, which could
lead to erroneous results.
.bull
The C compiler has been modified to properly cast floating-point constants
to the specified type. Notably FLT_MIN stored or passed as double is now
handled correctly (without spurious precision).
.bull
Handling of empty macro arguments has been corrected in the C compiler's
preprocessor. Previously, empty macro arguments could result in invalid tokens
in certain cases.
.bull
The peephole optimizer is now run again after register allocation. This
allows the code generator to take advantage of some optimization opportunities
that were previously missed.
.bull
The code generator has been modified to copy DS into ES in __interrupt routine
prolog (right after DS was loaded) if the ES register is considered
unalterable, ie. in flat model. This may avoid crashes if ES is dereferenced
explicitly or implicitly in interrupt handlers, for instance when calling
memcpy().
.bull
The linker and other tools have been fixed to correctly classify code segments.
Previously, code segments could be misclassified as data, which led to incorrect
disassembly and generation of debugging information.
.bull
A performance problem related to emitting debugging information for structures
or unions with many members has been corrected in the code generator.
.bull
The POSIX-defined header libgen.h has been implemented. This includes two
functions, basename() and dirname().
.bull
The functions btowc(), fwide(), mbsinit(), wctrans(), and towctrans() have
been added to the C runtime library. These functions are all related to
wide-character and multi-byte support, and were first defined by the ISO C
Normative Amendment 1.
.bull
C99 functions llabs(), lldiv(), and _Exit() have been added to the C runtime
library. Note that the latter is equivalent to _exit(), defined by POSIX.
.bull
Support for C99 floating-point classification macros has been implemented.
This includes fpclassify, isfinite, isinf, isnan, isnormal, and signbit.
.bull
Modifiers 'hh', 'j', 'z', and 't' defined by C99 for the printf and scanf
family of functions have been implemented in the C runtime library. Please
see the C Library Reference for details.
.bull
The 'F' modifier for printf and scanf families of functions conflicts with
'F' format specifier defined by ISO C for floating-point conversions. It has
been replaced by a 'W' modifier which is now used to denote a far pointer.
The 'F' modifier is still recognized in DOS builds of the runtime library
(which therefore cannot handle the 'F' format specifier as defined by ISO C),
but is no longer documented and will be removed in a future release.
.bull
Several very obscure bugs have been fixed in the printf and scanf family of
functions. These problems were discovered thanks to a more stringent testing
procedure and had never been reported by users.
.bull
The strtod function has been enhanced to follow C99 specification. It will
now parse infinity and NaN, as well as hexadecimal floating-point numbers.
See the C Library Reference for details.
.bull
The math library has been fixed to perform binary to decimal floating-point
conversions with greater precision. This fixes a problem where in some cases
a conversion from binary to decimal and back was losing precision or producing
erroneous results.
.bull
The graphics library has been fixed to correctly work with VESA modes where
the number of bytes per line does not directly correspond to width of the
mode in pixels.
.bull
The owcc utility has been much improved and documented; this tool is a POSIX
style compiler driver, designed to provide certain level of command line
compatibility with gcc and ease porting.
.bull
The NOEXTension linker option has been documented; this option instructs the
linker not to add any extension (.exe, .dll, etc.) to the executable name.
Any argument to the NAME directive will be used verbatim. This option had
been supported by earlier versions of the linker but not documented.
.bull
The 'include' preprocessor directive not prefixed by an exclamation mark
is now recognized in wmake -ms mode for compatibility with Microsoft and
IBM NMAKE.
.bull
The wmake utility has been enhanced to evaluate NMAKE style '[cmd]'
expressions (ie. shell commands) in preprocessor !if directives. This
functionality is supported in both wmake and -ms mode.
.bull
Several problems related to the Watcom debugging information format have
been fixed in the linker and debugger. Note that the Watcom format is
considered obsolete and its use is not recommended.
.bull
A random but very rare startup failure of Windows based GUI tools (notably
wdw) has been fixed.
.endbull
.*
.*
.section Differences from Open Watcom Version 1.3
.*
.np
Following is a list of changes made in &product 1.4:
.begbull
.bull
Support for C99 designated initializers has been added to the C compiler,
for example "struct {int a, b;} c = {.a=0, .b=1};". This is also supported
for arrays, for example "int a[4] = {[0]=5, [3]=2};".
.bull
Handling of enumerations has been fixed in the C compiler. In certain cases,
the compiler chose the wrong type for operations on objects of enumerated
types. Enumerated constants up to 64 bits wide are now also allowed (including
in 16-bit compilers).
.bull
The C compiler will now warn if the right hand operand of a bitwise shift
expression is a constant that is either negative or greater than or equal
to the bit with of the promoted left operand. The result of such operation is
not defined by ISO C. The warnings are 'W134: Shift amount negative' and
'W135: Shift amount too large'.
.bull
The C compiler now warns in cases where an unsigned type is compared for <= 0.
This is equivalent to 'unsigned == 0' and often indicates that a signed

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -