Date: Saturday, September 23, 2017 @ 15:37:10 Author: felixonmars Revision: 260037
archrelease: copy trunk to community-i686, community-x86_64 Added: haskell-language-c/repos/community-i686/PKGBUILD (from rev 260036, haskell-language-c/trunk/PKGBUILD) haskell-language-c/repos/community-i686/float128.patch (from rev 260036, haskell-language-c/trunk/float128.patch) haskell-language-c/repos/community-x86_64/PKGBUILD (from rev 260036, haskell-language-c/trunk/PKGBUILD) haskell-language-c/repos/community-x86_64/float128.patch (from rev 260036, haskell-language-c/trunk/float128.patch) Deleted: haskell-language-c/repos/community-i686/PKGBUILD haskell-language-c/repos/community-i686/float128.patch haskell-language-c/repos/community-x86_64/PKGBUILD haskell-language-c/repos/community-x86_64/float128.patch ---------------------------------+ /PKGBUILD | 100 +++++++++++ /float128.patch | 342 ++++++++++++++++++++++++++++++++++++++ community-i686/PKGBUILD | 53 ----- community-i686/float128.patch | 171 ------------------- community-x86_64/PKGBUILD | 53 ----- community-x86_64/float128.patch | 171 ------------------- 6 files changed, 442 insertions(+), 448 deletions(-) Deleted: community-i686/PKGBUILD =================================================================== --- community-i686/PKGBUILD 2017-09-23 15:36:22 UTC (rev 260036) +++ community-i686/PKGBUILD 2017-09-23 15:37:10 UTC (rev 260037) @@ -1,53 +0,0 @@ -# $Id$ -# Maintainer: Felix Yan <felixonm...@archlinux.org> -# Contributor: Arch Haskell Team <arch-hask...@haskell.org> - -_hkgname=language-c -pkgname=haskell-language-c -pkgver=0.6.1 -pkgrel=6 -pkgdesc="Analysis and generation of C code" -url="http://visq.github.io/language-c/" -license=("custom:BSD3") -arch=('i686' 'x86_64') -depends=('ghc-libs' "haskell-syb") -makedepends=('happy' 'alex' 'ghc') -source=("https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz" - float128.patch) -sha256sums=('23cadc9d04e46490ec57f56b79ecdc2a709ebf57571345905e6e30db29fa37e8' - 'e9ca5665c11229f67b2b411aedd98ede1d4a1639c91c667ef9ac611071b0ec69') - -prepare() { - cd $_hkgname-$pkgver - # https://github.com/visq/language-c/pull/33 - patch -p1 -i ../float128.patch -} - -build() { - cd "${srcdir}/${_hkgname}-${pkgver}" - - rm -fr dist - - runhaskell Setup configure -O --enable-executable-dynamic --enable-shared \ - --prefix=/usr --docdir="/usr/share/doc/${pkgname}" \ - --dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid \ - -fseparatesyb -fusebytestrings -fsplitbase - runhaskell Setup build - runhaskell Setup register --gen-script - runhaskell Setup unregister --gen-script - sed -i -r -e "s|ghc-pkg.*update[^ ]* |&'--force' |" register.sh - sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh -} - -package() { - cd "${srcdir}/${_hkgname}-${pkgver}" - - install -D -m744 register.sh "${pkgdir}/usr/share/haskell/register/${pkgname}.sh" - install -D -m744 unregister.sh "${pkgdir}/usr/share/haskell/unregister/${pkgname}.sh" - runhaskell Setup copy --destdir="${pkgdir}" - install -D -m644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" - rm -f "${pkgdir}/usr/share/doc/${pkgname}/LICENSE" - - # Remove static libs - find "$pkgdir"/usr/lib -name "*.a" -delete -} Copied: haskell-language-c/repos/community-i686/PKGBUILD (from rev 260036, haskell-language-c/trunk/PKGBUILD) =================================================================== --- community-i686/PKGBUILD (rev 0) +++ community-i686/PKGBUILD 2017-09-23 15:37:10 UTC (rev 260037) @@ -0,0 +1,50 @@ +# $Id$ +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Arch Haskell Team <arch-hask...@haskell.org> + +_hkgname=language-c +pkgname=haskell-language-c +pkgver=0.6.1 +pkgrel=7 +pkgdesc="Analysis and generation of C code" +url="http://visq.github.io/language-c/" +license=("custom:BSD3") +arch=('i686' 'x86_64') +depends=('ghc-libs' "haskell-syb") +makedepends=('happy' 'alex' 'ghc') +source=("https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz" + float128.patch) +sha512sums=('e20711aaf4206fedd8dbd37b0093f0b7cda1ea67971f05875cd895949cd892f1e10a9d554880508781a37323386c043742219377d0de5b1a27748b4cc8d183dc' + '71498a0578c7f318d2d62e652c5498d60895a9b480a31e3b4629e66d33bd4c0e55502b72d077ce1411722b102375420349fc3ccfe80fc9cc10a64e6394f32df6') + +prepare() { + cd $_hkgname-$pkgver + # https://github.com/visq/language-c/pull/33 + patch -p1 -i ../float128.patch +} + +build() { + cd "${srcdir}/${_hkgname}-${pkgver}" + + rm -fr dist + + runhaskell Setup configure -O --enable-shared --enable-executable-dynamic --disable-library-vanilla \ + --prefix=/usr --docdir="/usr/share/doc/${pkgname}" \ + --dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid \ + -fseparatesyb -fusebytestrings -fsplitbase + runhaskell Setup build + runhaskell Setup register --gen-script + runhaskell Setup unregister --gen-script + sed -i -r -e "s|ghc-pkg.*update[^ ]* |&'--force' |" register.sh + sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh +} + +package() { + cd "${srcdir}/${_hkgname}-${pkgver}" + + install -D -m744 register.sh "${pkgdir}/usr/share/haskell/register/${pkgname}.sh" + install -D -m744 unregister.sh "${pkgdir}/usr/share/haskell/unregister/${pkgname}.sh" + runhaskell Setup copy --destdir="${pkgdir}" + install -D -m644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + rm -f "${pkgdir}/usr/share/doc/${pkgname}/LICENSE" +} Deleted: community-i686/float128.patch =================================================================== --- community-i686/float128.patch 2017-09-23 15:36:22 UTC (rev 260036) +++ community-i686/float128.patch 2017-09-23 15:37:10 UTC (rev 260037) @@ -1,171 +0,0 @@ -From a53a3225bfd588e1a9b2cd00c5e4d0fe2c9bb2f1 Mon Sep 17 00:00:00 2001 -From: Fangrui Song <i...@maskray.me> -Date: Sun, 21 May 2017 14:23:49 -0700 -Subject: [PATCH] Add __float128 - -`stddef.h` shipped by GCC 7.1.0 [1] adds when `__i386__` is defined. This change breaks a lot packages depending on c2hs (which in turn depends on language-c). - -[1]: https://github.com/gcc-mirror/gcc/commit/9b5c49ef97e63cc63f1ffa13baf771368105ebe2 ---- - README | 3 +-- - src/Language/C/Parser/Lexer.x | 6 ++++-- - src/Language/C/Parser/Parser.y | 2 ++ - src/Language/C/Parser/Tokens.hs | 3 +++ - src/Language/C/Pretty.hs | 1 + - src/Language/C/Syntax/AST.hs | 5 +++++ - 6 files changed, 16 insertions(+), 4 deletions(-) - -diff --git a/README b/README -index 9ea1084..2a4bf71 100644 ---- a/README -+++ b/README -@@ -33,7 +33,6 @@ Currently unsupported C11 constructs: - - Currently unsupported GNU C extensions: - - __auto_type -- - __float128 - - __builtin_offsetof - char a[__builtin_offsetof (struct S, sa->f) - - _Decimal32 -@@ -54,4 +53,4 @@ A couple of small examples are available in /examples - A couple of regression tests can be run via - > cd test/harness; make - --For more tests, see test/README. -\ No newline at end of file -+For more tests, see test/README. -diff --git a/src/Language/C/Parser/Lexer.x b/src/Language/C/Parser/Lexer.x -index 54f918e..ebebc29 100644 ---- a/src/Language/C/Parser/Lexer.x -+++ b/src/Language/C/Parser/Lexer.x -@@ -119,7 +119,8 @@ $infname = . # [ \\ \" ] -- valid character in a filename - @hexmant = @hexdigits?\.@hexdigits|@hexdigits\. - @binexp = [pP][\+\-]?@digits - --@floatsuffix = [fFlL] -+-- Suffixes `qQwW` are GNU floating type extensions: <https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html> -+@floatsuffix = [fFlLqQwW] - @floatgnusuffix = @floatsuffix@gnusuffix?|@gnusuffix@floatsuffix? - - -- clang version literals with a major.minor.rev -@@ -297,7 +298,7 @@ label __label__ - (CTokGnuC GnuCOffsetof) __builtin_offsetof - (CTokGnuC GnuCTyCompat) __builtin_types_compatible_p - -} ---- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p -+-- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float __float128 for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p - idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'a' : 's' : []) = tok 8 CTokAlignas - idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 8 CTokAlignof - idkwtok ('_' : 'A' : 't' : 'o' : 'm' : 'i' : 'c' : []) = tok 7 CTokAtomic -@@ -337,6 +338,7 @@ idkwtok ('e' : 'n' : 'u' : 'm' : []) = tok 4 CTokEnum - idkwtok ('_' : '_' : 'e' : 'x' : 't' : 'e' : 'n' : 's' : 'i' : 'o' : 'n' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCExtTok) - idkwtok ('e' : 'x' : 't' : 'e' : 'r' : 'n' : []) = tok 6 CTokExtern - idkwtok ('f' : 'l' : 'o' : 'a' : 't' : []) = tok 5 CTokFloat -+idkwtok ('_' : '_' : 'f' : 'l' : 'o' : 'a' : 't' : '1' : '2' : '8' : []) = tok 10 CTokFloat128 - idkwtok ('f' : 'o' : 'r' : []) = tok 3 CTokFor - idkwtok ('g' : 'o' : 't' : 'o' : []) = tok 4 CTokGoto - idkwtok ('i' : 'f' : []) = tok 2 CTokIf -diff --git a/src/Language/C/Parser/Parser.y b/src/Language/C/Parser/Parser.y -index 9b40bf6..dfe6de0 100644 ---- a/src/Language/C/Parser/Parser.y -+++ b/src/Language/C/Parser/Parser.y -@@ -201,6 +201,7 @@ else { CTokElse _ } - enum { CTokEnum _ } - extern { CTokExtern _ } - float { CTokFloat _ } -+"__float128" { CTokFloat128 _ } - for { CTokFor _ } - "_Generic" { CTokGeneric _ } - goto { CTokGoto _ } -@@ -872,6 +873,7 @@ basic_type_name - | "_Bool" {% withNodeInfo $1 $ CBoolType } - | "_Complex" {% withNodeInfo $1 $ CComplexType } - | "__int128" {% withNodeInfo $1 $ CInt128Type } -+ | "__float128" {% withNodeInfo $1 $ CFloat128Type } - - - -- A mixture of type qualifiers, storage class and basic type names in any -diff --git a/src/Language/C/Parser/Tokens.hs b/src/Language/C/Parser/Tokens.hs -index f9b6c1a..be5013e 100644 ---- a/src/Language/C/Parser/Tokens.hs -+++ b/src/Language/C/Parser/Tokens.hs -@@ -92,6 +92,7 @@ data CToken = CTokLParen !PosLength -- `(' - | CTokEnum !PosLength -- `enum' - | CTokExtern !PosLength -- `extern' - | CTokFloat !PosLength -- `float' -+ | CTokFloat128 !PosLength -- `__float128' - | CTokFor !PosLength -- `for' - | CTokGeneric !PosLength -- `_Generic' - | CTokGoto !PosLength -- `goto' -@@ -224,6 +225,7 @@ posLenOfTok (CTokElse pos ) = pos - posLenOfTok (CTokEnum pos ) = pos - posLenOfTok (CTokExtern pos ) = pos - posLenOfTok (CTokFloat pos ) = pos -+posLenOfTok (CTokFloat128 pos ) = pos - posLenOfTok (CTokFor pos ) = pos - posLenOfTok (CTokGeneric pos ) = pos - posLenOfTok (CTokGoto pos ) = pos -@@ -330,6 +332,7 @@ instance Show CToken where - showsPrec _ (CTokEnum _ ) = showString "enum" - showsPrec _ (CTokExtern _ ) = showString "extern" - showsPrec _ (CTokFloat _ ) = showString "float" -+ showsPrec _ (CTokFloat128 _ ) = showString "__float128" - showsPrec _ (CTokFor _ ) = showString "for" - showsPrec _ (CTokGeneric _ ) = showString "_Generic" - showsPrec _ (CTokGoto _ ) = showString "goto" -diff --git a/src/Language/C/Pretty.hs b/src/Language/C/Pretty.hs -index b7ce31e..aa32d5b 100644 ---- a/src/Language/C/Pretty.hs -+++ b/src/Language/C/Pretty.hs -@@ -244,6 +244,7 @@ instance Pretty CTypeSpec where - pretty (CIntType _) = text "int" - pretty (CLongType _) = text "long" - pretty (CFloatType _) = text "float" -+ pretty (CFloat128Type _) = text "__float128" - pretty (CDoubleType _) = text "double" - pretty (CSignedType _) = text "signed" - pretty (CUnsigType _) = text "unsigned" -diff --git a/src/Language/C/Syntax/AST.hs b/src/Language/C/Syntax/AST.hs -index 39ea2e5..b257b7e 100644 ---- a/src/Language/C/Syntax/AST.hs -+++ b/src/Language/C/Syntax/AST.hs -@@ -434,6 +434,7 @@ data CTypeSpecifier a - | CIntType a - | CLongType a - | CFloatType a -+ | CFloat128Type a - | CDoubleType a - | CSignedType a - | CUnsigType a -@@ -1028,6 +1029,7 @@ instance CNode t1 => CNode (CTypeSpecifier t1) where - nodeInfo (CIntType d) = nodeInfo d - nodeInfo (CLongType d) = nodeInfo d - nodeInfo (CFloatType d) = nodeInfo d -+ nodeInfo (CFloat128Type d) = nodeInfo d - nodeInfo (CDoubleType d) = nodeInfo d - nodeInfo (CSignedType d) = nodeInfo d - nodeInfo (CUnsigType d) = nodeInfo d -@@ -1050,6 +1052,7 @@ instance Functor CTypeSpecifier where - fmap _f (CIntType a1) = CIntType (_f a1) - fmap _f (CLongType a1) = CLongType (_f a1) - fmap _f (CFloatType a1) = CFloatType (_f a1) -+ fmap _f (CFloat128Type a1) = CFloat128Type (_f a1) - fmap _f (CDoubleType a1) = CDoubleType (_f a1) - fmap _f (CSignedType a1) = CSignedType (_f a1) - fmap _f (CUnsigType a1) = CUnsigType (_f a1) -@@ -1070,6 +1073,7 @@ instance Annotated CTypeSpecifier where - annotation (CIntType n) = n - annotation (CLongType n) = n - annotation (CFloatType n) = n -+ annotation (CFloat128Type n) = n - annotation (CDoubleType n) = n - annotation (CSignedType n) = n - annotation (CUnsigType n) = n -@@ -1088,6 +1092,7 @@ instance Annotated CTypeSpecifier where - amap f (CIntType a_1) = CIntType (f a_1) - amap f (CLongType a_1) = CLongType (f a_1) - amap f (CFloatType a_1) = CFloatType (f a_1) -+ amap f (CFloat128Type a_1) = CFloat128Type (f a_1) - amap f (CDoubleType a_1) = CDoubleType (f a_1) - amap f (CSignedType a_1) = CSignedType (f a_1) - amap f (CUnsigType a_1) = CUnsigType (f a_1) Copied: haskell-language-c/repos/community-i686/float128.patch (from rev 260036, haskell-language-c/trunk/float128.patch) =================================================================== --- community-i686/float128.patch (rev 0) +++ community-i686/float128.patch 2017-09-23 15:37:10 UTC (rev 260037) @@ -0,0 +1,171 @@ +From a53a3225bfd588e1a9b2cd00c5e4d0fe2c9bb2f1 Mon Sep 17 00:00:00 2001 +From: Fangrui Song <i...@maskray.me> +Date: Sun, 21 May 2017 14:23:49 -0700 +Subject: [PATCH] Add __float128 + +`stddef.h` shipped by GCC 7.1.0 [1] adds when `__i386__` is defined. This change breaks a lot packages depending on c2hs (which in turn depends on language-c). + +[1]: https://github.com/gcc-mirror/gcc/commit/9b5c49ef97e63cc63f1ffa13baf771368105ebe2 +--- + README | 3 +-- + src/Language/C/Parser/Lexer.x | 6 ++++-- + src/Language/C/Parser/Parser.y | 2 ++ + src/Language/C/Parser/Tokens.hs | 3 +++ + src/Language/C/Pretty.hs | 1 + + src/Language/C/Syntax/AST.hs | 5 +++++ + 6 files changed, 16 insertions(+), 4 deletions(-) + +diff --git a/README b/README +index 9ea1084..2a4bf71 100644 +--- a/README ++++ b/README +@@ -33,7 +33,6 @@ Currently unsupported C11 constructs: + + Currently unsupported GNU C extensions: + - __auto_type +- - __float128 + - __builtin_offsetof + char a[__builtin_offsetof (struct S, sa->f) + - _Decimal32 +@@ -54,4 +53,4 @@ A couple of small examples are available in /examples + A couple of regression tests can be run via + > cd test/harness; make + +-For more tests, see test/README. +\ No newline at end of file ++For more tests, see test/README. +diff --git a/src/Language/C/Parser/Lexer.x b/src/Language/C/Parser/Lexer.x +index 54f918e..ebebc29 100644 +--- a/src/Language/C/Parser/Lexer.x ++++ b/src/Language/C/Parser/Lexer.x +@@ -119,7 +119,8 @@ $infname = . # [ \\ \" ] -- valid character in a filename + @hexmant = @hexdigits?\.@hexdigits|@hexdigits\. + @binexp = [pP][\+\-]?@digits + +-@floatsuffix = [fFlL] ++-- Suffixes `qQwW` are GNU floating type extensions: <https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html> ++@floatsuffix = [fFlLqQwW] + @floatgnusuffix = @floatsuffix@gnusuffix?|@gnusuffix@floatsuffix? + + -- clang version literals with a major.minor.rev +@@ -297,7 +298,7 @@ label __label__ + (CTokGnuC GnuCOffsetof) __builtin_offsetof + (CTokGnuC GnuCTyCompat) __builtin_types_compatible_p + -} +--- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p ++-- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float __float128 for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p + idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'a' : 's' : []) = tok 8 CTokAlignas + idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 8 CTokAlignof + idkwtok ('_' : 'A' : 't' : 'o' : 'm' : 'i' : 'c' : []) = tok 7 CTokAtomic +@@ -337,6 +338,7 @@ idkwtok ('e' : 'n' : 'u' : 'm' : []) = tok 4 CTokEnum + idkwtok ('_' : '_' : 'e' : 'x' : 't' : 'e' : 'n' : 's' : 'i' : 'o' : 'n' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCExtTok) + idkwtok ('e' : 'x' : 't' : 'e' : 'r' : 'n' : []) = tok 6 CTokExtern + idkwtok ('f' : 'l' : 'o' : 'a' : 't' : []) = tok 5 CTokFloat ++idkwtok ('_' : '_' : 'f' : 'l' : 'o' : 'a' : 't' : '1' : '2' : '8' : []) = tok 10 CTokFloat128 + idkwtok ('f' : 'o' : 'r' : []) = tok 3 CTokFor + idkwtok ('g' : 'o' : 't' : 'o' : []) = tok 4 CTokGoto + idkwtok ('i' : 'f' : []) = tok 2 CTokIf +diff --git a/src/Language/C/Parser/Parser.y b/src/Language/C/Parser/Parser.y +index 9b40bf6..dfe6de0 100644 +--- a/src/Language/C/Parser/Parser.y ++++ b/src/Language/C/Parser/Parser.y +@@ -201,6 +201,7 @@ else { CTokElse _ } + enum { CTokEnum _ } + extern { CTokExtern _ } + float { CTokFloat _ } ++"__float128" { CTokFloat128 _ } + for { CTokFor _ } + "_Generic" { CTokGeneric _ } + goto { CTokGoto _ } +@@ -872,6 +873,7 @@ basic_type_name + | "_Bool" {% withNodeInfo $1 $ CBoolType } + | "_Complex" {% withNodeInfo $1 $ CComplexType } + | "__int128" {% withNodeInfo $1 $ CInt128Type } ++ | "__float128" {% withNodeInfo $1 $ CFloat128Type } + + + -- A mixture of type qualifiers, storage class and basic type names in any +diff --git a/src/Language/C/Parser/Tokens.hs b/src/Language/C/Parser/Tokens.hs +index f9b6c1a..be5013e 100644 +--- a/src/Language/C/Parser/Tokens.hs ++++ b/src/Language/C/Parser/Tokens.hs +@@ -92,6 +92,7 @@ data CToken = CTokLParen !PosLength -- `(' + | CTokEnum !PosLength -- `enum' + | CTokExtern !PosLength -- `extern' + | CTokFloat !PosLength -- `float' ++ | CTokFloat128 !PosLength -- `__float128' + | CTokFor !PosLength -- `for' + | CTokGeneric !PosLength -- `_Generic' + | CTokGoto !PosLength -- `goto' +@@ -224,6 +225,7 @@ posLenOfTok (CTokElse pos ) = pos + posLenOfTok (CTokEnum pos ) = pos + posLenOfTok (CTokExtern pos ) = pos + posLenOfTok (CTokFloat pos ) = pos ++posLenOfTok (CTokFloat128 pos ) = pos + posLenOfTok (CTokFor pos ) = pos + posLenOfTok (CTokGeneric pos ) = pos + posLenOfTok (CTokGoto pos ) = pos +@@ -330,6 +332,7 @@ instance Show CToken where + showsPrec _ (CTokEnum _ ) = showString "enum" + showsPrec _ (CTokExtern _ ) = showString "extern" + showsPrec _ (CTokFloat _ ) = showString "float" ++ showsPrec _ (CTokFloat128 _ ) = showString "__float128" + showsPrec _ (CTokFor _ ) = showString "for" + showsPrec _ (CTokGeneric _ ) = showString "_Generic" + showsPrec _ (CTokGoto _ ) = showString "goto" +diff --git a/src/Language/C/Pretty.hs b/src/Language/C/Pretty.hs +index b7ce31e..aa32d5b 100644 +--- a/src/Language/C/Pretty.hs ++++ b/src/Language/C/Pretty.hs +@@ -244,6 +244,7 @@ instance Pretty CTypeSpec where + pretty (CIntType _) = text "int" + pretty (CLongType _) = text "long" + pretty (CFloatType _) = text "float" ++ pretty (CFloat128Type _) = text "__float128" + pretty (CDoubleType _) = text "double" + pretty (CSignedType _) = text "signed" + pretty (CUnsigType _) = text "unsigned" +diff --git a/src/Language/C/Syntax/AST.hs b/src/Language/C/Syntax/AST.hs +index 39ea2e5..b257b7e 100644 +--- a/src/Language/C/Syntax/AST.hs ++++ b/src/Language/C/Syntax/AST.hs +@@ -434,6 +434,7 @@ data CTypeSpecifier a + | CIntType a + | CLongType a + | CFloatType a ++ | CFloat128Type a + | CDoubleType a + | CSignedType a + | CUnsigType a +@@ -1028,6 +1029,7 @@ instance CNode t1 => CNode (CTypeSpecifier t1) where + nodeInfo (CIntType d) = nodeInfo d + nodeInfo (CLongType d) = nodeInfo d + nodeInfo (CFloatType d) = nodeInfo d ++ nodeInfo (CFloat128Type d) = nodeInfo d + nodeInfo (CDoubleType d) = nodeInfo d + nodeInfo (CSignedType d) = nodeInfo d + nodeInfo (CUnsigType d) = nodeInfo d +@@ -1050,6 +1052,7 @@ instance Functor CTypeSpecifier where + fmap _f (CIntType a1) = CIntType (_f a1) + fmap _f (CLongType a1) = CLongType (_f a1) + fmap _f (CFloatType a1) = CFloatType (_f a1) ++ fmap _f (CFloat128Type a1) = CFloat128Type (_f a1) + fmap _f (CDoubleType a1) = CDoubleType (_f a1) + fmap _f (CSignedType a1) = CSignedType (_f a1) + fmap _f (CUnsigType a1) = CUnsigType (_f a1) +@@ -1070,6 +1073,7 @@ instance Annotated CTypeSpecifier where + annotation (CIntType n) = n + annotation (CLongType n) = n + annotation (CFloatType n) = n ++ annotation (CFloat128Type n) = n + annotation (CDoubleType n) = n + annotation (CSignedType n) = n + annotation (CUnsigType n) = n +@@ -1088,6 +1092,7 @@ instance Annotated CTypeSpecifier where + amap f (CIntType a_1) = CIntType (f a_1) + amap f (CLongType a_1) = CLongType (f a_1) + amap f (CFloatType a_1) = CFloatType (f a_1) ++ amap f (CFloat128Type a_1) = CFloat128Type (f a_1) + amap f (CDoubleType a_1) = CDoubleType (f a_1) + amap f (CSignedType a_1) = CSignedType (f a_1) + amap f (CUnsigType a_1) = CUnsigType (f a_1) Deleted: community-x86_64/PKGBUILD =================================================================== --- community-x86_64/PKGBUILD 2017-09-23 15:36:22 UTC (rev 260036) +++ community-x86_64/PKGBUILD 2017-09-23 15:37:10 UTC (rev 260037) @@ -1,53 +0,0 @@ -# $Id$ -# Maintainer: Felix Yan <felixonm...@archlinux.org> -# Contributor: Arch Haskell Team <arch-hask...@haskell.org> - -_hkgname=language-c -pkgname=haskell-language-c -pkgver=0.6.1 -pkgrel=6 -pkgdesc="Analysis and generation of C code" -url="http://visq.github.io/language-c/" -license=("custom:BSD3") -arch=('i686' 'x86_64') -depends=('ghc-libs' "haskell-syb") -makedepends=('happy' 'alex' 'ghc') -source=("https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz" - float128.patch) -sha256sums=('23cadc9d04e46490ec57f56b79ecdc2a709ebf57571345905e6e30db29fa37e8' - 'e9ca5665c11229f67b2b411aedd98ede1d4a1639c91c667ef9ac611071b0ec69') - -prepare() { - cd $_hkgname-$pkgver - # https://github.com/visq/language-c/pull/33 - patch -p1 -i ../float128.patch -} - -build() { - cd "${srcdir}/${_hkgname}-${pkgver}" - - rm -fr dist - - runhaskell Setup configure -O --enable-executable-dynamic --enable-shared \ - --prefix=/usr --docdir="/usr/share/doc/${pkgname}" \ - --dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid \ - -fseparatesyb -fusebytestrings -fsplitbase - runhaskell Setup build - runhaskell Setup register --gen-script - runhaskell Setup unregister --gen-script - sed -i -r -e "s|ghc-pkg.*update[^ ]* |&'--force' |" register.sh - sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh -} - -package() { - cd "${srcdir}/${_hkgname}-${pkgver}" - - install -D -m744 register.sh "${pkgdir}/usr/share/haskell/register/${pkgname}.sh" - install -D -m744 unregister.sh "${pkgdir}/usr/share/haskell/unregister/${pkgname}.sh" - runhaskell Setup copy --destdir="${pkgdir}" - install -D -m644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" - rm -f "${pkgdir}/usr/share/doc/${pkgname}/LICENSE" - - # Remove static libs - find "$pkgdir"/usr/lib -name "*.a" -delete -} Copied: haskell-language-c/repos/community-x86_64/PKGBUILD (from rev 260036, haskell-language-c/trunk/PKGBUILD) =================================================================== --- community-x86_64/PKGBUILD (rev 0) +++ community-x86_64/PKGBUILD 2017-09-23 15:37:10 UTC (rev 260037) @@ -0,0 +1,50 @@ +# $Id$ +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Arch Haskell Team <arch-hask...@haskell.org> + +_hkgname=language-c +pkgname=haskell-language-c +pkgver=0.6.1 +pkgrel=7 +pkgdesc="Analysis and generation of C code" +url="http://visq.github.io/language-c/" +license=("custom:BSD3") +arch=('i686' 'x86_64') +depends=('ghc-libs' "haskell-syb") +makedepends=('happy' 'alex' 'ghc') +source=("https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz" + float128.patch) +sha512sums=('e20711aaf4206fedd8dbd37b0093f0b7cda1ea67971f05875cd895949cd892f1e10a9d554880508781a37323386c043742219377d0de5b1a27748b4cc8d183dc' + '71498a0578c7f318d2d62e652c5498d60895a9b480a31e3b4629e66d33bd4c0e55502b72d077ce1411722b102375420349fc3ccfe80fc9cc10a64e6394f32df6') + +prepare() { + cd $_hkgname-$pkgver + # https://github.com/visq/language-c/pull/33 + patch -p1 -i ../float128.patch +} + +build() { + cd "${srcdir}/${_hkgname}-${pkgver}" + + rm -fr dist + + runhaskell Setup configure -O --enable-shared --enable-executable-dynamic --disable-library-vanilla \ + --prefix=/usr --docdir="/usr/share/doc/${pkgname}" \ + --dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid \ + -fseparatesyb -fusebytestrings -fsplitbase + runhaskell Setup build + runhaskell Setup register --gen-script + runhaskell Setup unregister --gen-script + sed -i -r -e "s|ghc-pkg.*update[^ ]* |&'--force' |" register.sh + sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh +} + +package() { + cd "${srcdir}/${_hkgname}-${pkgver}" + + install -D -m744 register.sh "${pkgdir}/usr/share/haskell/register/${pkgname}.sh" + install -D -m744 unregister.sh "${pkgdir}/usr/share/haskell/unregister/${pkgname}.sh" + runhaskell Setup copy --destdir="${pkgdir}" + install -D -m644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + rm -f "${pkgdir}/usr/share/doc/${pkgname}/LICENSE" +} Deleted: community-x86_64/float128.patch =================================================================== --- community-x86_64/float128.patch 2017-09-23 15:36:22 UTC (rev 260036) +++ community-x86_64/float128.patch 2017-09-23 15:37:10 UTC (rev 260037) @@ -1,171 +0,0 @@ -From a53a3225bfd588e1a9b2cd00c5e4d0fe2c9bb2f1 Mon Sep 17 00:00:00 2001 -From: Fangrui Song <i...@maskray.me> -Date: Sun, 21 May 2017 14:23:49 -0700 -Subject: [PATCH] Add __float128 - -`stddef.h` shipped by GCC 7.1.0 [1] adds when `__i386__` is defined. This change breaks a lot packages depending on c2hs (which in turn depends on language-c). - -[1]: https://github.com/gcc-mirror/gcc/commit/9b5c49ef97e63cc63f1ffa13baf771368105ebe2 ---- - README | 3 +-- - src/Language/C/Parser/Lexer.x | 6 ++++-- - src/Language/C/Parser/Parser.y | 2 ++ - src/Language/C/Parser/Tokens.hs | 3 +++ - src/Language/C/Pretty.hs | 1 + - src/Language/C/Syntax/AST.hs | 5 +++++ - 6 files changed, 16 insertions(+), 4 deletions(-) - -diff --git a/README b/README -index 9ea1084..2a4bf71 100644 ---- a/README -+++ b/README -@@ -33,7 +33,6 @@ Currently unsupported C11 constructs: - - Currently unsupported GNU C extensions: - - __auto_type -- - __float128 - - __builtin_offsetof - char a[__builtin_offsetof (struct S, sa->f) - - _Decimal32 -@@ -54,4 +53,4 @@ A couple of small examples are available in /examples - A couple of regression tests can be run via - > cd test/harness; make - --For more tests, see test/README. -\ No newline at end of file -+For more tests, see test/README. -diff --git a/src/Language/C/Parser/Lexer.x b/src/Language/C/Parser/Lexer.x -index 54f918e..ebebc29 100644 ---- a/src/Language/C/Parser/Lexer.x -+++ b/src/Language/C/Parser/Lexer.x -@@ -119,7 +119,8 @@ $infname = . # [ \\ \" ] -- valid character in a filename - @hexmant = @hexdigits?\.@hexdigits|@hexdigits\. - @binexp = [pP][\+\-]?@digits - --@floatsuffix = [fFlL] -+-- Suffixes `qQwW` are GNU floating type extensions: <https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html> -+@floatsuffix = [fFlLqQwW] - @floatgnusuffix = @floatsuffix@gnusuffix?|@gnusuffix@floatsuffix? - - -- clang version literals with a major.minor.rev -@@ -297,7 +298,7 @@ label __label__ - (CTokGnuC GnuCOffsetof) __builtin_offsetof - (CTokGnuC GnuCTyCompat) __builtin_types_compatible_p - -} ---- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p -+-- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float __float128 for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p - idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'a' : 's' : []) = tok 8 CTokAlignas - idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 8 CTokAlignof - idkwtok ('_' : 'A' : 't' : 'o' : 'm' : 'i' : 'c' : []) = tok 7 CTokAtomic -@@ -337,6 +338,7 @@ idkwtok ('e' : 'n' : 'u' : 'm' : []) = tok 4 CTokEnum - idkwtok ('_' : '_' : 'e' : 'x' : 't' : 'e' : 'n' : 's' : 'i' : 'o' : 'n' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCExtTok) - idkwtok ('e' : 'x' : 't' : 'e' : 'r' : 'n' : []) = tok 6 CTokExtern - idkwtok ('f' : 'l' : 'o' : 'a' : 't' : []) = tok 5 CTokFloat -+idkwtok ('_' : '_' : 'f' : 'l' : 'o' : 'a' : 't' : '1' : '2' : '8' : []) = tok 10 CTokFloat128 - idkwtok ('f' : 'o' : 'r' : []) = tok 3 CTokFor - idkwtok ('g' : 'o' : 't' : 'o' : []) = tok 4 CTokGoto - idkwtok ('i' : 'f' : []) = tok 2 CTokIf -diff --git a/src/Language/C/Parser/Parser.y b/src/Language/C/Parser/Parser.y -index 9b40bf6..dfe6de0 100644 ---- a/src/Language/C/Parser/Parser.y -+++ b/src/Language/C/Parser/Parser.y -@@ -201,6 +201,7 @@ else { CTokElse _ } - enum { CTokEnum _ } - extern { CTokExtern _ } - float { CTokFloat _ } -+"__float128" { CTokFloat128 _ } - for { CTokFor _ } - "_Generic" { CTokGeneric _ } - goto { CTokGoto _ } -@@ -872,6 +873,7 @@ basic_type_name - | "_Bool" {% withNodeInfo $1 $ CBoolType } - | "_Complex" {% withNodeInfo $1 $ CComplexType } - | "__int128" {% withNodeInfo $1 $ CInt128Type } -+ | "__float128" {% withNodeInfo $1 $ CFloat128Type } - - - -- A mixture of type qualifiers, storage class and basic type names in any -diff --git a/src/Language/C/Parser/Tokens.hs b/src/Language/C/Parser/Tokens.hs -index f9b6c1a..be5013e 100644 ---- a/src/Language/C/Parser/Tokens.hs -+++ b/src/Language/C/Parser/Tokens.hs -@@ -92,6 +92,7 @@ data CToken = CTokLParen !PosLength -- `(' - | CTokEnum !PosLength -- `enum' - | CTokExtern !PosLength -- `extern' - | CTokFloat !PosLength -- `float' -+ | CTokFloat128 !PosLength -- `__float128' - | CTokFor !PosLength -- `for' - | CTokGeneric !PosLength -- `_Generic' - | CTokGoto !PosLength -- `goto' -@@ -224,6 +225,7 @@ posLenOfTok (CTokElse pos ) = pos - posLenOfTok (CTokEnum pos ) = pos - posLenOfTok (CTokExtern pos ) = pos - posLenOfTok (CTokFloat pos ) = pos -+posLenOfTok (CTokFloat128 pos ) = pos - posLenOfTok (CTokFor pos ) = pos - posLenOfTok (CTokGeneric pos ) = pos - posLenOfTok (CTokGoto pos ) = pos -@@ -330,6 +332,7 @@ instance Show CToken where - showsPrec _ (CTokEnum _ ) = showString "enum" - showsPrec _ (CTokExtern _ ) = showString "extern" - showsPrec _ (CTokFloat _ ) = showString "float" -+ showsPrec _ (CTokFloat128 _ ) = showString "__float128" - showsPrec _ (CTokFor _ ) = showString "for" - showsPrec _ (CTokGeneric _ ) = showString "_Generic" - showsPrec _ (CTokGoto _ ) = showString "goto" -diff --git a/src/Language/C/Pretty.hs b/src/Language/C/Pretty.hs -index b7ce31e..aa32d5b 100644 ---- a/src/Language/C/Pretty.hs -+++ b/src/Language/C/Pretty.hs -@@ -244,6 +244,7 @@ instance Pretty CTypeSpec where - pretty (CIntType _) = text "int" - pretty (CLongType _) = text "long" - pretty (CFloatType _) = text "float" -+ pretty (CFloat128Type _) = text "__float128" - pretty (CDoubleType _) = text "double" - pretty (CSignedType _) = text "signed" - pretty (CUnsigType _) = text "unsigned" -diff --git a/src/Language/C/Syntax/AST.hs b/src/Language/C/Syntax/AST.hs -index 39ea2e5..b257b7e 100644 ---- a/src/Language/C/Syntax/AST.hs -+++ b/src/Language/C/Syntax/AST.hs -@@ -434,6 +434,7 @@ data CTypeSpecifier a - | CIntType a - | CLongType a - | CFloatType a -+ | CFloat128Type a - | CDoubleType a - | CSignedType a - | CUnsigType a -@@ -1028,6 +1029,7 @@ instance CNode t1 => CNode (CTypeSpecifier t1) where - nodeInfo (CIntType d) = nodeInfo d - nodeInfo (CLongType d) = nodeInfo d - nodeInfo (CFloatType d) = nodeInfo d -+ nodeInfo (CFloat128Type d) = nodeInfo d - nodeInfo (CDoubleType d) = nodeInfo d - nodeInfo (CSignedType d) = nodeInfo d - nodeInfo (CUnsigType d) = nodeInfo d -@@ -1050,6 +1052,7 @@ instance Functor CTypeSpecifier where - fmap _f (CIntType a1) = CIntType (_f a1) - fmap _f (CLongType a1) = CLongType (_f a1) - fmap _f (CFloatType a1) = CFloatType (_f a1) -+ fmap _f (CFloat128Type a1) = CFloat128Type (_f a1) - fmap _f (CDoubleType a1) = CDoubleType (_f a1) - fmap _f (CSignedType a1) = CSignedType (_f a1) - fmap _f (CUnsigType a1) = CUnsigType (_f a1) -@@ -1070,6 +1073,7 @@ instance Annotated CTypeSpecifier where - annotation (CIntType n) = n - annotation (CLongType n) = n - annotation (CFloatType n) = n -+ annotation (CFloat128Type n) = n - annotation (CDoubleType n) = n - annotation (CSignedType n) = n - annotation (CUnsigType n) = n -@@ -1088,6 +1092,7 @@ instance Annotated CTypeSpecifier where - amap f (CIntType a_1) = CIntType (f a_1) - amap f (CLongType a_1) = CLongType (f a_1) - amap f (CFloatType a_1) = CFloatType (f a_1) -+ amap f (CFloat128Type a_1) = CFloat128Type (f a_1) - amap f (CDoubleType a_1) = CDoubleType (f a_1) - amap f (CSignedType a_1) = CSignedType (f a_1) - amap f (CUnsigType a_1) = CUnsigType (f a_1) Copied: haskell-language-c/repos/community-x86_64/float128.patch (from rev 260036, haskell-language-c/trunk/float128.patch) =================================================================== --- community-x86_64/float128.patch (rev 0) +++ community-x86_64/float128.patch 2017-09-23 15:37:10 UTC (rev 260037) @@ -0,0 +1,171 @@ +From a53a3225bfd588e1a9b2cd00c5e4d0fe2c9bb2f1 Mon Sep 17 00:00:00 2001 +From: Fangrui Song <i...@maskray.me> +Date: Sun, 21 May 2017 14:23:49 -0700 +Subject: [PATCH] Add __float128 + +`stddef.h` shipped by GCC 7.1.0 [1] adds when `__i386__` is defined. This change breaks a lot packages depending on c2hs (which in turn depends on language-c). + +[1]: https://github.com/gcc-mirror/gcc/commit/9b5c49ef97e63cc63f1ffa13baf771368105ebe2 +--- + README | 3 +-- + src/Language/C/Parser/Lexer.x | 6 ++++-- + src/Language/C/Parser/Parser.y | 2 ++ + src/Language/C/Parser/Tokens.hs | 3 +++ + src/Language/C/Pretty.hs | 1 + + src/Language/C/Syntax/AST.hs | 5 +++++ + 6 files changed, 16 insertions(+), 4 deletions(-) + +diff --git a/README b/README +index 9ea1084..2a4bf71 100644 +--- a/README ++++ b/README +@@ -33,7 +33,6 @@ Currently unsupported C11 constructs: + + Currently unsupported GNU C extensions: + - __auto_type +- - __float128 + - __builtin_offsetof + char a[__builtin_offsetof (struct S, sa->f) + - _Decimal32 +@@ -54,4 +53,4 @@ A couple of small examples are available in /examples + A couple of regression tests can be run via + > cd test/harness; make + +-For more tests, see test/README. +\ No newline at end of file ++For more tests, see test/README. +diff --git a/src/Language/C/Parser/Lexer.x b/src/Language/C/Parser/Lexer.x +index 54f918e..ebebc29 100644 +--- a/src/Language/C/Parser/Lexer.x ++++ b/src/Language/C/Parser/Lexer.x +@@ -119,7 +119,8 @@ $infname = . # [ \\ \" ] -- valid character in a filename + @hexmant = @hexdigits?\.@hexdigits|@hexdigits\. + @binexp = [pP][\+\-]?@digits + +-@floatsuffix = [fFlL] ++-- Suffixes `qQwW` are GNU floating type extensions: <https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html> ++@floatsuffix = [fFlLqQwW] + @floatgnusuffix = @floatsuffix@gnusuffix?|@gnusuffix@floatsuffix? + + -- clang version literals with a major.minor.rev +@@ -297,7 +298,7 @@ label __label__ + (CTokGnuC GnuCOffsetof) __builtin_offsetof + (CTokGnuC GnuCTyCompat) __builtin_types_compatible_p + -} +--- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p ++-- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float __float128 for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p + idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'a' : 's' : []) = tok 8 CTokAlignas + idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 8 CTokAlignof + idkwtok ('_' : 'A' : 't' : 'o' : 'm' : 'i' : 'c' : []) = tok 7 CTokAtomic +@@ -337,6 +338,7 @@ idkwtok ('e' : 'n' : 'u' : 'm' : []) = tok 4 CTokEnum + idkwtok ('_' : '_' : 'e' : 'x' : 't' : 'e' : 'n' : 's' : 'i' : 'o' : 'n' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCExtTok) + idkwtok ('e' : 'x' : 't' : 'e' : 'r' : 'n' : []) = tok 6 CTokExtern + idkwtok ('f' : 'l' : 'o' : 'a' : 't' : []) = tok 5 CTokFloat ++idkwtok ('_' : '_' : 'f' : 'l' : 'o' : 'a' : 't' : '1' : '2' : '8' : []) = tok 10 CTokFloat128 + idkwtok ('f' : 'o' : 'r' : []) = tok 3 CTokFor + idkwtok ('g' : 'o' : 't' : 'o' : []) = tok 4 CTokGoto + idkwtok ('i' : 'f' : []) = tok 2 CTokIf +diff --git a/src/Language/C/Parser/Parser.y b/src/Language/C/Parser/Parser.y +index 9b40bf6..dfe6de0 100644 +--- a/src/Language/C/Parser/Parser.y ++++ b/src/Language/C/Parser/Parser.y +@@ -201,6 +201,7 @@ else { CTokElse _ } + enum { CTokEnum _ } + extern { CTokExtern _ } + float { CTokFloat _ } ++"__float128" { CTokFloat128 _ } + for { CTokFor _ } + "_Generic" { CTokGeneric _ } + goto { CTokGoto _ } +@@ -872,6 +873,7 @@ basic_type_name + | "_Bool" {% withNodeInfo $1 $ CBoolType } + | "_Complex" {% withNodeInfo $1 $ CComplexType } + | "__int128" {% withNodeInfo $1 $ CInt128Type } ++ | "__float128" {% withNodeInfo $1 $ CFloat128Type } + + + -- A mixture of type qualifiers, storage class and basic type names in any +diff --git a/src/Language/C/Parser/Tokens.hs b/src/Language/C/Parser/Tokens.hs +index f9b6c1a..be5013e 100644 +--- a/src/Language/C/Parser/Tokens.hs ++++ b/src/Language/C/Parser/Tokens.hs +@@ -92,6 +92,7 @@ data CToken = CTokLParen !PosLength -- `(' + | CTokEnum !PosLength -- `enum' + | CTokExtern !PosLength -- `extern' + | CTokFloat !PosLength -- `float' ++ | CTokFloat128 !PosLength -- `__float128' + | CTokFor !PosLength -- `for' + | CTokGeneric !PosLength -- `_Generic' + | CTokGoto !PosLength -- `goto' +@@ -224,6 +225,7 @@ posLenOfTok (CTokElse pos ) = pos + posLenOfTok (CTokEnum pos ) = pos + posLenOfTok (CTokExtern pos ) = pos + posLenOfTok (CTokFloat pos ) = pos ++posLenOfTok (CTokFloat128 pos ) = pos + posLenOfTok (CTokFor pos ) = pos + posLenOfTok (CTokGeneric pos ) = pos + posLenOfTok (CTokGoto pos ) = pos +@@ -330,6 +332,7 @@ instance Show CToken where + showsPrec _ (CTokEnum _ ) = showString "enum" + showsPrec _ (CTokExtern _ ) = showString "extern" + showsPrec _ (CTokFloat _ ) = showString "float" ++ showsPrec _ (CTokFloat128 _ ) = showString "__float128" + showsPrec _ (CTokFor _ ) = showString "for" + showsPrec _ (CTokGeneric _ ) = showString "_Generic" + showsPrec _ (CTokGoto _ ) = showString "goto" +diff --git a/src/Language/C/Pretty.hs b/src/Language/C/Pretty.hs +index b7ce31e..aa32d5b 100644 +--- a/src/Language/C/Pretty.hs ++++ b/src/Language/C/Pretty.hs +@@ -244,6 +244,7 @@ instance Pretty CTypeSpec where + pretty (CIntType _) = text "int" + pretty (CLongType _) = text "long" + pretty (CFloatType _) = text "float" ++ pretty (CFloat128Type _) = text "__float128" + pretty (CDoubleType _) = text "double" + pretty (CSignedType _) = text "signed" + pretty (CUnsigType _) = text "unsigned" +diff --git a/src/Language/C/Syntax/AST.hs b/src/Language/C/Syntax/AST.hs +index 39ea2e5..b257b7e 100644 +--- a/src/Language/C/Syntax/AST.hs ++++ b/src/Language/C/Syntax/AST.hs +@@ -434,6 +434,7 @@ data CTypeSpecifier a + | CIntType a + | CLongType a + | CFloatType a ++ | CFloat128Type a + | CDoubleType a + | CSignedType a + | CUnsigType a +@@ -1028,6 +1029,7 @@ instance CNode t1 => CNode (CTypeSpecifier t1) where + nodeInfo (CIntType d) = nodeInfo d + nodeInfo (CLongType d) = nodeInfo d + nodeInfo (CFloatType d) = nodeInfo d ++ nodeInfo (CFloat128Type d) = nodeInfo d + nodeInfo (CDoubleType d) = nodeInfo d + nodeInfo (CSignedType d) = nodeInfo d + nodeInfo (CUnsigType d) = nodeInfo d +@@ -1050,6 +1052,7 @@ instance Functor CTypeSpecifier where + fmap _f (CIntType a1) = CIntType (_f a1) + fmap _f (CLongType a1) = CLongType (_f a1) + fmap _f (CFloatType a1) = CFloatType (_f a1) ++ fmap _f (CFloat128Type a1) = CFloat128Type (_f a1) + fmap _f (CDoubleType a1) = CDoubleType (_f a1) + fmap _f (CSignedType a1) = CSignedType (_f a1) + fmap _f (CUnsigType a1) = CUnsigType (_f a1) +@@ -1070,6 +1073,7 @@ instance Annotated CTypeSpecifier where + annotation (CIntType n) = n + annotation (CLongType n) = n + annotation (CFloatType n) = n ++ annotation (CFloat128Type n) = n + annotation (CDoubleType n) = n + annotation (CSignedType n) = n + annotation (CUnsigType n) = n +@@ -1088,6 +1092,7 @@ instance Annotated CTypeSpecifier where + amap f (CIntType a_1) = CIntType (f a_1) + amap f (CLongType a_1) = CLongType (f a_1) + amap f (CFloatType a_1) = CFloatType (f a_1) ++ amap f (CFloat128Type a_1) = CFloat128Type (f a_1) + amap f (CDoubleType a_1) = CDoubleType (f a_1) + amap f (CSignedType a_1) = CSignedType (f a_1) + amap f (CUnsigType a_1) = CUnsigType (f a_1)