Commit Graph

36 Commits

Author SHA1 Message Date
pfg
a15825e0be gcc: Add support for -Wmissing-prototypes in C++
Support for warnings about missing prototypes in C++ was added by Apple
GCC (Radar 6261539).  Most of the code crept into r260311 so it felt
natural to make use of it.

Obtained from:	Apple GCC - 5646
MFC after:	5 days
2014-01-26 02:36:06 +00:00
pfg
922d712301 gcc: backport some fixes from llvm-gcc
llvm-gcc backported some patches from gcc trunk:

http://gcc.gnu.org/ml/gcc-cvs/2007-05/msg00662.html
http://gcc.gnu.org/ml/gcc-cvs/2007-07/msg00019.html
http://gcc.gnu.org/ml/gcc-cvs/2007-08/msg00240.html
http://gcc.gnu.org/ml/gcc-cvs/2007-08/msg00493.html

The first two were always GPL2. The last two were
added after the GPL3 transition, but were written
by aaw@google.com and Rafael Espíndola got permission
to relicense them under the GPL2 for inclusion in
llvm-gcc.

This fixes GCC-PR c++/31749

Obtained from:	llvm-gcc (rev. 75463; GPLv2)
MFC after:	2 weeks
2014-01-05 20:33:44 +00:00
pfg
9c8bbe6849 gcc: Add support for Apple's Block extension
Block objects [1] are a C-level syntactic and runtime feature. They
are similar to standard C functions, but in addition to executable
code they may also contain variable bindings to automatic (stack)
or managed (heap) memory. A block can therefore maintain a set of
state (data) that it can use to impact behavior when executed.

This port is based on Apple's GCC 5646 with some bugfixes from
Apple GCC 5666.3. It has some small differences with the support
in clang, which remains the recommended compiler.

Perhaps the most notable difference is that in GCC that __block
is not actually a keyword, but a macro. There will be workaround
for this issue in a near future. Other issues can be consulted in
the clang documentation [2]

For better compatiblity with Apple's GCC and llvm-gcc some related
fixes and features from Apple have been included. Support for the
non-standard nested functions in GCC is now off by default.

No effort was made to update the ObjC support since FreeBSD doesn't
carry ObjC in the base system, but some of the code crept in and
was more difficult to remove than to adjust.

Reference:
[1]
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html
[2]
http://clang.llvm.org/compatibility.html#block-variable-initialization

Obtained from:	Apple GCC 4.2
MFC after:	3 weeks
2014-01-05 00:43:28 +00:00
pfg
c5923c0498 gcc: Add support for label attributes and "unavailable" attribute.
Apple GCC has extensions to support for both label attributes and
an "unavailable" attribute. These are critical for objc but are
also useful in regular C/C++.

Apparently at least the label attributes might have found their way to
upstream GCC but the code doesn't seem available on the GPLv2 tree so
we are taking the code directly from Apple. To make this clearer we
are preserving the annoying "APPLE LOCAL" tags and the ChangeLogs
when they are available.

Obtained from:	Apple GCC 4.2 - 5531
MFC after:	3 weeks
2013-12-28 20:30:31 +00:00
pfg
86ff4ac57b gcc: revert Rvalue references.
They are very useful but at this time I prefer not to figure out
some  minor conflicts with the bigger Apple's blocks support
patch that is being worked on for current.
2013-12-20 18:09:34 +00:00
pfg
a13c7f1bac gcc: merge upstream fix and new feature.
Fix for PR c++/29928

Add support for Rvalue references as described here:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html

Obtained from:	gcc 4.3 (rev. 124724, 125211; GPLv2)
MFC after:	2 weeks
2013-12-20 16:01:02 +00:00
pfg
fc9e1b74f0 gcc: small merges from upstream
Solves GCC issues:
PR middle-end/32602
PR middle-end/32603

Updates the to documentation and processing
improvement.

Obtained from:	gcc 4.3 (rev. 119427, 126278, 126422; GPLv2)
MFC after:	2 weeks
2013-12-17 23:31:51 +00:00
pfg
af1fa864ed gcc: new fvisibility-ms-compat option
Obtained from:	gcc 4.3 (rev. 126088; GPLv2)
MFC after:	3 weeks
2013-12-08 03:02:44 +00:00
pfg
412075b231 gcc: upstream alignment cleanups.
This solves GCC/32617 and contributes to reduce differences with
Apple's gcc42.

Complete some references in the ChangeLog while here.

Obtained from:	gcc 4.3 (rev. 126529, 126588; GPLv2)
MFC after:	3 weeks
2013-11-29 18:46:02 +00:00
pfg
5f3a48e3be Forced commit to note that r258652 is actually:
gcc: Move conditions before an assert.

It is a bit cleaner to check the conditions before calling the assertion.
It also preserves the style from the rest of the code.
This is just a cosmetical change to match better what both Apple's gcc42
and Android's gcc-4.2.1 do.
2013-11-26 15:18:40 +00:00
pfg
537e7ce6f9 gcc: Altivec register adjustments from Apple.
Obtained from:	gcc pre-4.3 (rev. 124763; GPLv2)
MFC after:	3 weeks
2013-11-26 14:58:37 +00:00
pfg
43666eab78 gcc: Add a new option -Wvla to warn variable length array.
Obtained from:	gcc 4.3 (rev. 122851; GPLv2)
MFC after:	3 weeks
2013-11-16 01:03:56 +00:00
mm
586f2662eb Fix invalid assertion of C++ external static data member declarations
as anonymous namespaces are local to the current translation.

GCC PR:		c++/33094

Reviewed by:	uqs
Approved by:	re (kib)
Obtained from:	gcc (branches/redhat/gcc-4_1-branch, rev. 129554, GPLv2)
MFC after:	1 week
2011-07-30 17:27:29 +00:00
mm
24a0f968ca Upgrade of base gcc and libstdc++ to the last GPLv2-licensed revision
(rev. 127959 of gcc-4_2-branch).

Resolved GCC bugs:
	c++: 17763, 29365, 30535, 30917, 31337, 31941, 32108, 32112, 32346,
	     32898, 32992
	debug: 32610, 32914
	libstdc++: 33084, 33128
	middle-end: 32563
	rtl-optimization: 33148
	tree-optimization: 25413, 32723
	target: 32218

Tested by:	pointyhat (miwi)
Obtained from:	gcc (gcc-4_2-branch up to rev. 127959)
PR:		gnu/153298, gnu/153959, gnu/154385
MFC after:	1 month
2011-03-29 20:53:51 +00:00
kan
3cae63863e Merge files that are no longer carry FreeBSD local changes.
Approved by:	re (kensmith)
2007-08-14 03:02:26 +00:00
kan
cadd557b2c FreeBSD uses unchanged versions of this files. 2007-05-19 02:12:21 +00:00
kan
d2e7ac2a73 Resolve conflicts after GCC 3.4.6 20060825 import. 2006-08-26 21:37:21 +00:00
kan
f8dd8336e3 Stock files. 2005-06-03 03:50:42 +00:00
kan
9de6fbee58 Use stock version of this file now. 2004-07-28 05:03:19 +00:00
kan
e8544b5a9c Merge r1.8 (printf format error fixes). 2003-11-07 03:13:51 +00:00
kan
f2372ee34a Merge FreeBSD modifications into gcc 3.3.1-release:
1.8   printf format error fixes.
2003-08-22 03:18:02 +00:00
kan
a00c7154f8 Merge FreeBSD modifications into gcc 3.3.1-prerelease:
1.8	printf format error fixes.
2003-07-11 04:34:52 +00:00
kan
bdfd3bdba6 Merge FreeBSD modifications into gcc 3.2.2 release:
1.8  printf format error fixes.
2003-02-10 06:07:12 +00:00
obrien
ddc99173df Merge rev 1.8 (printf format error fixes) into Gcc 3.2.1 release. 2002-12-04 16:13:54 +00:00
kan
897ceed212 Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.8  printf format error fixes

Approved by:	obrien
2002-10-10 04:53:46 +00:00
kan
b804ce4fd3 Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.8  printf format error fixes

Approved by:	obrien
2002-09-17 04:16:58 +00:00
kan
1f55c3310d Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.8  printf format error fixes

Approved by:	obrien
2002-09-01 21:16:14 +00:00
obrien
3519dd389b Merge rev 1.2 (printf format error fixes) in its 1.8 form into Gcc 3.1 pre. 2002-05-09 22:39:46 +00:00
obrien
1b2d183105 A slightly different version of rev 1.2 that is closer to something the
GCC maintainers might actually accept.
2002-02-06 05:04:25 +00:00
obrien
1f24b90f6a Merge rev 1.2 (printf format error fixes) into GCC 3.1-snap. 2002-02-06 05:03:43 +00:00
obrien
b2d68729b2 Merge gcc.2.95.3-test1 changes onto mainline 2001-01-03 17:17:01 +00:00
obrien
797ccd6333 Fix conflicts. 2000-05-27 02:43:50 +00:00
obrien
7f3675d738 Merge rev 1.2 into GCC 2.95.1. 1999-10-16 07:35:28 +00:00
obrien
caa7271ba9 Bring BDE's printf format error fixes into EGCS. 1999-09-19 11:00:01 +00:00
bde
559a9a5f7d Fixed printf format errors. gcc should have a macro HOST_PTR_PRINTF_TYPE
to go with its HOST_PTR_PRINTF[_FORMAT], since if %p is wrong for the
format then `void *' is probably wrong for the type.
1998-08-02 14:57:00 +00:00
peter
d4691e641b Import of unmodified (but trimmed) gcc-2.7.2. The bigger parts of the
non-i386, non-unix, and generatable files have been trimmed, but can easily
be added in later if needed.

gcc-2.7.2.1 will follow shortly, it's a very small delta to this and it's
handy to have both available for reference for such little cost.

The freebsd-specific changes will then be committed, and once the dust has
settled, the bmakefiles will be committed to use this code.
1996-09-18 05:35:50 +00:00