Commit Graph

29 Commits

Author SHA1 Message Date
Conrad Meyer
2844d30cc5 gcc42: Fix minor C99 parse bug
DR #289[0] came down and gcc4.2.1 was on the wrong side of history.
Partially revert GCC r42574 (just remove the error) to rectify the parse
bug to match Clang and other compliant C99 compilers.

An example declaration gcc tripped on before this fix:

  void foobar(int [static 1]);

An example declaration gcc did not trip on before this fix:

  void foobar(int name[static 1]);

Bump __FreeBSD_cc_version.

[0]: http://www.open-std.org/JTC1/SC22/WG14/www/docs/dr_289.htm

Reported by:	allanjude
Sponsored by:	EMC / Isilon Storage Division
2016-05-27 03:40:52 +00:00
Pedro F. Giffuni
5bfc7db451 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
Pedro F. Giffuni
2d278bb89e 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
Pedro F. Giffuni
5b1674597f 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
Pedro F. Giffuni
007acff069 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
Ulrich Spörlein
d218e1127b - Fix typo in check_for_nested_with_variably_modified present
- Implement -Wvariable-decl.
- Port -Wtrampolines support from gcc3.
(all three also via OpenBSD)

PR:		gnu/127136, gnu/157019
Submitted by:	Henning Petersen, Pedro Giffuni
MFC after:	6 weeks
2011-07-01 20:45:55 +00:00
David Schultz
e4c3a7fc88 Merge an important change that I mistakenly left out when merging C99
inline function support. This should fix instances where gcc
spuriously reports the following error:

    error: nested function 'foo' declared but never defined
2009-03-25 05:10:32 +00:00
David Schultz
d5ed956300 Make gcc use C99 inline semantics in c99 and gnu99 mode. This was the
original intent, but the functionality wasn't implemented until after
gcc 4.2 was released. However, if you compiled a program that would
behave differently before and after this change, gcc 4.2 would have
warned you; hence, everything currently in the base system is
unaffected by this change.  This patch also adds additional warnings
about certain inline function-related bogosity, e.g., using a
static non-const local variable in an inline function.

These changes were merged from a snapshot of gcc mainline from March
2007, prior to the GPLv3 switch. I then ran the regression test suite
from a more recent gcc snapshot and fixed the important bugs it found.
I also squelched the following warning unless -pedantic is specified:

    foo is static but used in inline function bar which is not static

This is consistent with LLVM's behavior, but not consistent with gcc 4.3.

Reviewed by:	arch@
2009-03-14 19:36:13 +00:00
Alexander Kabaev
9d6b9560a8 FreeBSD uses unchanged versions of this files. 2007-05-19 02:12:21 +00:00
Alexander Kabaev
f2d5255ddd Resolve conflicts after GCC 3.4.6 20060825 import. 2006-08-26 21:37:21 +00:00
David E. O'Brien
d109621656 Fix bug where static forward declarations weren't accepted.
This allows us to fix non-ISO-C constructs in our kernel to legal ISO-C.

Submitted by:	rodrigc
Obtained from:	http://gcc.gnu.org/ml/gcc-patches/2005-09/msg00006.html
2005-09-07 09:23:39 +00:00
Alexander Kabaev
31a119f3ed Stock files. 2005-06-03 03:50:42 +00:00
Alexander Kabaev
7073af4071 Use stock version of this file.
Revision 1.3 to suppress warnings on K&R main is not useful anymore
since GCC suppresses such warnings unconditionally now.
2004-07-28 03:53:20 +00:00
Alexander Kabaev
0ebd98fb58 Merge r1.3 (suppress warnings on K&R main). 2003-11-07 03:21:29 +00:00
Alexander Kabaev
63cde6278d Merge FreeBSD modifications into gcc 3.3.1-release:
1.3 suppress warnings on K&R main.
2003-08-22 03:14:37 +00:00
Alexander Kabaev
fff64a6e53 Merge FreeBSD modifications into gcc 3.3.1-prerelease:
1.3 suppress warnings on K&R main.

  Rev. 1.2 (options for kernel printf enhancements) changes have been
  moved to another
2003-07-11 05:11:14 +00:00
Alexander Kabaev
10a72f72d8 Merge FreeBSD modifications into gcc 3.2.2 release:
1.2 kernel printf enhancements framework.
  1.3 suppress prototype warnings on K&R main.
2003-02-10 05:59:19 +00:00
David E. O'Brien
cc30d3f890 Merge revs 1.2 (kernel printf framework) and 1.3 (suppress K&R main warnings)
into Gcc 3.2.1 release.
2002-12-04 15:48:26 +00:00
Alexander Kabaev
819fe3892d Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.2 kernel printf enchancements framework
  1.3 suppress warnings on K&R main

Approved by:	obrien
2002-10-10 04:46:44 +00:00
Alexander Kabaev
449bacd8c3 Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.2 kernel printf enchancements framework
  1.3 suppress warnings on K&R main

Approved by:	obrien
2002-09-01 20:53:28 +00:00
David E. O'Brien
8a75a69eaf If you want to not warn on K&R main(); this is how it should be implemented. 2002-05-14 01:44:02 +00:00
David E. O'Brien
2e0c661e02 Add framework for our kernel printf enhancements. 2002-05-14 00:30:25 +00:00
David E. O'Brien
909b401074 Gcc 3.1.0 pre-release from the FSF anoncvs repo on 9-May-2002 15:57:15 EDT. 2002-05-09 20:02:13 +00:00
David E. O'Brien
1952e2e1c1 Enlist the FreeBSD-CURRENT users as testers of what is to become Gcc 3.1.0.
These bits are taken from the FSF anoncvs repo on 1-Feb-2002 08:20 PST.
2002-02-01 18:16:02 +00:00
David E. O'Brien
c4ac962157 Enlist the FreeBSD-CURRENT users as testers of GCC 2.95.3 Release Candidate #3 2001-02-17 08:34:50 +00:00
David E. O'Brien
ce5adf112e Bring in bug fixes from the GCC anoncvs server's "gcc-2_95-branch"
branch as of March 7th, 2000.
2000-03-09 09:21:46 +00:00
David E. O'Brien
f2c57ef828 Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
David E. O'Brien
2a266d02ba Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
Peter Wemm
a4cd5630b0 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