|
|
1.1 root 1: Noteworthy GCC changes in version 2.4.4:
2:
3: A crash building g++ on various hosts (including m68k) has been
4: fixed. Also the g++ compiler no longer reports incorrect
5: ambiguities in some situations where they do not exist, and
6: const template member functions are now being found properly.
7:
8: Noteworthy GCC changes in version 2.4:
9:
10: * On each target, the default is now to return short structures
11: compatibly with the "usual" compiler on that target.
12:
13: For most targets, this means the default is to return all structures
14: in memory, like long structures, in whatever way is used on that
15: target. Use -freg-struct-return to enable returning short structures
16: (and unions) in registers.
17:
18: This change means that newly compiled binaries are incompatible with
19: binaries compiled with previous versions of GCC.
20:
21: On some targets, GCC is itself the usual compiler. On these targets,
22: the default way to return short structures is still in registers.
23: Use -fpcc-struct-return to tell GCC to return them in memory.
24:
25: * There is now a floating point emulator which can imitate the way all
26: supported target machines do floating point arithmetic.
27:
28: This makes it possible to have cross compilation to and from the VAX,
29: and between machines of different endianness. However, this works
30: only when the target machine description is updated to use the new
31: facilities, and not all have been updated.
32:
33: This also makes possible support for longer floating point types.
34: GCC 2.4 supports extended format on the 68K if you use `long double',
35: for targets that have a 68881. (When we have run time library
36: routines for extended floating point, then `long double' will use
37: extended format on all 68K targets.)
38:
39: We expect to support extended floating point on the i386 and Sparc in
40: future versions.
41:
42: * Building GCC now automatically fixes the system's header files.
43: This should require no attention.
44:
45: * GCC now installs an unsigned data type as size_t when it fixes the
46: header files (on all but a handful of old target machines).
47: Therefore, the bug that size_t failed to be unsigned is fixed.
48:
49: * Building and installation are now completely separate.
50: All new files are constructed during the build process;
51: installation just copies them.
52:
53: * New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc
54: Lite.
55:
56: * A totally new and much better Objective C run time system is included.
57:
58: * Objective C supports many new features. Alas, I can't describe them
59: since I don't use that language; however, they are the same ones
60: supported in recent versions of the NeXT operating system.
61:
62: * The builtin functions __builtin_apply_args, __builtin_apply and
63: __builtin_return let you record the arguments and returned
64: value of a function without knowing their number or type.
65:
66: * The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__
67: give the name of the function in the source, and a pretty-printed
68: version of the name. The two are the same in C, but differ in C++.
69:
70: * Casts to union types do not yield lvalues.
71:
72: * ## before an empty rest argument discards the preceding sequence
73: of non-whitespace characters from the macro definition.
74: (This feature is subject to change.)
75:
76:
77: New features specific to C++:
78:
79: * The manual contains a new section ``Common Misunderstandings with
80: GNU C++'' that C++ users should read.
81:
82: * #pragma interface and #pragma implementation let you use the same
83: C++ source file for both interface and implementation.
84: However, this mechanism is still in transition.
85:
86: * Named returned values let you avoid an extra constructor call
87: when a function result has a class type.
88:
89: * The C++ operators <? and >? yield min and max, respectively.
90:
91: * C++ gotos can exit a block safely even if the block has
92: aggregates that require destructors.
93:
94: * gcc defines the macro __GNUG__ when compiling C++ programs.
95:
96: * GNU C++ now correctly distinguishes between the prefix and postfix
97: forms of overloaded operator ++ and --. To avoid breaking old
98: code, if a class defines only the prefix form, the compiler
99: accepts either ++obj or obj++, unless -pedantic is used.
100:
101: * If you are using version 2.3 of libg++, you need to rebuild it with
102: `make CC=gcc' to avoid mismatches in the definition of `size_t'.
103:
104:
105: Newly documented compiler options:
106:
107: -fnostartfiles
108: Omit the standard system startup files when linking.
109:
110: -fvolatile-global
111: Consider memory references to extern and global data items to
112: be volatile.
113:
114: -idirafter DIR
115: Add DIR to the second include path.
116:
117: -iprefix PREFIX
118: Specify PREFIX for later -iwithprefix options.
119:
120: -iwithprefix DIR
121: Add PREFIX/DIR to the second include path.
122:
123: -mv8
124: Emit Sparc v8 code (with integer multiply and divide).
125: -msparclite
126: Emit Sparclite code (roughly v7.5).
127:
128: -print-libgcc-file-name
129: Search for the libgcc.a file, print its absolute file name, and exit.
130:
131: -Woverloaded-virtual
132: Warn when a derived class function declaration may be an error
133: in defining a C++ virtual function.
134:
135: -Wtemplate-debugging
136: When using templates in a C++ program, warn if debugging is
137: not yet fully available.
138:
139: +eN
140: Control how C++ virtual function definitions are used
141: (like cfront 1.x).
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.