[PATCH v2] Handle OS X deployment targets correctly

Lawrence Velázquez vq@larryv.me
Wed May 20 22:13:00 GMT 2015


As described in PR target/63810, this addresses several problems with
the validation and encoding of deployment target version strings for the
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro.  There are
currently four testcases exercising inputs to -mmacosx-version-min
(gcc/testsuite/gcc.dg/darwin-minversion-*), but they provide minimal
coverage, and one is incorrect.

* The tiny number is now respected, if present.  Thus "10.9.4"
  correctly becomes "1094" instead of "1090", and "10.10.1" becomes
  "101001" instead of "101000".
* Zero padding is now ignored.  Thus "10.09" correctly becomes "1090"
  instead of "100900", and "10.00010" becomes "101000" instead of being
  treated as invalid.
* Deployment targets that are missing minor and tiny numbers are no
  longer considered invalid.  Thus "10" is treated as "10.0.0", which
  becomes "1000" without causing an error.

With this change, trunk matches the behavior of Apple LLVM Compiler
6.1.0 on 8,451 of 8,464 generated test inputs.  (The discrepancies are
due to a bug in Clang.)  I don't notice any testsuite regressions on
OS X 10.10 Yosemite x86-64.

2015-05-15  Lawrence Velázquez  <vq@larryv.me>

	PR target/63810
	* gcc/config/darwin-c.c (version_components): New global enum.
	(parse_version, version_as_legacy_macro)
	(version_as_modern_macro, macosx_version_as_macro): New functions.
	(version_as_macro): Remove.
	(darwin_cpp_builtins): Use new function.
	* gcc/testsuite/gcc.dg/darwin-minversion-3.c: Update testcase.
	* gcc/testsuite/gcc.dg/darwin-minversion-4.c: Ditto.
	* gcc/testsuite/gcc.dg/darwin-minversion-5.c: New testcase.
	* gcc/testsuite/gcc.dg/darwin-minversion-6.c: Ditto.
	* gcc/testsuite/gcc.dg/darwin-minversion-7.c: Ditto.
	* gcc/testsuite/gcc.dg/darwin-minversion-8.c: Ditto.
	* gcc/testsuite/gcc.dg/darwin-minversion-9.c: Ditto.
	* gcc/testsuite/gcc.dg/darwin-minversion-10.c: Ditto.
	* gcc/testsuite/gcc.dg/darwin-minversion-11.c: Ditto.
	* gcc/testsuite/gcc.dg/darwin-minversion-12.c: Ditto.
---
Re-roll to address patch review on PR target/63810.  Provided as
text/x-patch attachment to accommodate Apple Mail wonkiness.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810#c21

 gcc/config/darwin-c.c                       | 168 +++++++++++++++++++++++-----
 gcc/testsuite/gcc.dg/darwin-minversion-10.c |  16 +++
 gcc/testsuite/gcc.dg/darwin-minversion-11.c |  16 +++
 gcc/testsuite/gcc.dg/darwin-minversion-12.c |  16 +++
 gcc/testsuite/gcc.dg/darwin-minversion-3.c  |   6 +-
 gcc/testsuite/gcc.dg/darwin-minversion-4.c  |   6 +-
 gcc/testsuite/gcc.dg/darwin-minversion-5.c  |  16 +++
 gcc/testsuite/gcc.dg/darwin-minversion-6.c  |  15 +++
 gcc/testsuite/gcc.dg/darwin-minversion-7.c  |  15 +++
 gcc/testsuite/gcc.dg/darwin-minversion-8.c  |  16 +++
 gcc/testsuite/gcc.dg/darwin-minversion-9.c  |  15 +++
 11 files changed, 273 insertions(+), 32 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-10.c
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-11.c
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-12.c
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-5.c
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-6.c
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-7.c
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-8.c
 create mode 100644 gcc/testsuite/gcc.dg/darwin-minversion-9.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: v2-0001-Handle-OS-X-deployment-targets-correctly.patch
Type: text/x-patch
Size: 13479 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150520/a80e1e05/attachment.bin>


More information about the Gcc-patches mailing list