testsuite: disable gcc's warnings about casts of incompatible prototypes in UNREG
authorSergei Trofimovich <slyfox@gentoo.org>
Sat, 23 Aug 2014 08:01:16 +0000 (11:01 +0300)
committerAustin Seipp <austin@well-typed.com>
Mon, 3 Nov 2014 13:24:58 +0000 (07:24 -0600)
Haskell's 'foreign import' declaraion does not have a way
to extress exact C prototypes (it ignores 'const' modifiers, exact pointer
types, etc.) which leads to warnings when C backend generates calls to such
functions:

    /tmp/ghc32698_0/ghc32698_10.hc:52:5:
         warning: conflicting types for built-in function ‘strlen’ [enabled by default]
         EF_(strlen);
             ^

Patch disables builtin functions for UNREG build
to workaround test failures due to stderr mismatch.

Fixes the following test failures:
    TEST="safePkg01 T5423 T7574 T3736"

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit fcdd58d2ddcfd8d420adbcb3f20c1d666bc834e6)

testsuite/mk/test.mk

index 0cc3f21..ab059bf 100644 (file)
@@ -25,6 +25,13 @@ COMPILER     = ghc
 CONFIGDIR    = $(TOP)/config
 CONFIG       = $(CONFIGDIR)/$(COMPILER)
 
+ifeq "$(GhcUnregisterised)" "YES"
+    # Otherwise C backend generates many warnings about
+    # imcompatible proto casts for GCC's buitins:
+    #    memcpy, printf, strlen.
+    EXTRA_HC_OPTS += -optc-fno-builtin
+endif
+
 # TEST_HC_OPTS is passed to every invocation of TEST_HC 
 # in nested Makefiles
 TEST_HC_OPTS = -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-$(GhcPackageDbFlag) -rtsopts $(EXTRA_HC_OPTS)