Zubin pushed to branch wip/9.12.3-backports at Glasgow Haskell Compiler / GHC
Commits:
-
a8ce2f00
by Vladislav Zavialov at 2025-10-22T12:39:41+05:30
-
72e32447
by Ben Gamari at 2025-10-22T12:42:06+05:30
-
dc9e7c4e
by Ben Gamari at 2025-10-22T12:42:20+05:30
-
08179480
by sheaf at 2025-10-22T12:42:31+05:30
-
38d49c64
by Brandon Chinn at 2025-10-22T12:43:24+05:30
-
10a82889
by Ben Gamari at 2025-10-23T17:35:29+05:30
26 changed files:
- compiler/GHC/Parser/Lexer.x
- compiler/GHC/Parser/Lexer/String.x
- compiler/GHC/StgToByteCode.hs
- compiler/GHC/Tc/Gen/Match.hs
- + rts/BuiltinClosures.c
- + rts/BuiltinClosures.h
- rts/Interpreter.c
- rts/RtsStartup.c
- rts/StgMiscClosures.cmm
- rts/include/rts/Constants.h
- rts/include/stg/MiscClosures.h
- rts/rts.cabal
- + testsuite/tests/bytecode/T26216.hs
- + testsuite/tests/bytecode/T26216.script
- + testsuite/tests/bytecode/T26216.stdout
- + testsuite/tests/bytecode/T26216_aux.hs
- testsuite/tests/bytecode/all.T
- testsuite/tests/codeGen/should_run/T23146/all.T
- + testsuite/tests/parser/should_run/T26415.hs
- + testsuite/tests/parser/should_run/T26415.stdout
- testsuite/tests/parser/should_run/all.T
- + testsuite/tests/typecheck/should_compile/T25960.hs
- testsuite/tests/typecheck/should_compile/all.T
- + testsuite/tests/typecheck/should_fail/T25004k.hs
- + testsuite/tests/typecheck/should_fail/T25004k.stderr
- testsuite/tests/typecheck/should_fail/all.T
Changes:
| ... | ... | @@ -145,7 +145,7 @@ import GHC.Parser.String |
| 145 | 145 | $unispace = \x05 -- Trick Alex into handling Unicode. See Note [Unicode in Alex].
|
| 146 | 146 | $nl = [\n\r\f]
|
| 147 | 147 | $space = [\ $unispace]
|
| 148 | -$whitechar = [$nl \v $space]
|
|
| 148 | +$whitechar = [$nl \t \v $space]
|
|
| 149 | 149 | $white_no_nl = $whitechar # \n -- TODO #8424
|
| 150 | 150 | $tab = \t
|
| 151 | 151 | |
| ... | ... | @@ -248,7 +248,7 @@ haskell :- |
| 248 | 248 | -- Alex "Rules"
|
| 249 | 249 | |
| 250 | 250 | -- everywhere: skip whitespace
|
| 251 | -$white_no_nl+ ;
|
|
| 251 | +($white_no_nl # \t)+ ;
|
|
| 252 | 252 | $tab { warnTab }
|
| 253 | 253 | |
| 254 | 254 | -- Everywhere: deal with nested comments. We explicitly rule out
|
| ... | ... | @@ -25,7 +25,7 @@ import GHC.Utils.Panic (panic) |
| 25 | 25 | $unispace = \x05 -- Trick Alex into handling Unicode. See Note [Unicode in Alex].
|
| 26 | 26 | $nl = [\n\r\f]
|
| 27 | 27 | $space = [\ $unispace]
|
| 28 | -$whitechar = [$nl \v $space]
|
|
| 28 | +$whitechar = [$nl \t \v $space]
|
|
| 29 | 29 | $tab = \t
|
| 30 | 30 | |
| 31 | 31 | $ascdigit = 0-9
|
| ... | ... | @@ -1930,11 +1930,12 @@ pushAtom d p (StgVarArg var) |
| 1930 | 1930 | -- PUSH_G doesn't tag constructors. So we use PACK here
|
| 1931 | 1931 | -- if we are dealing with nullary constructor.
|
| 1932 | 1932 | case isDataConWorkId_maybe var of
|
| 1933 | - Just con -> do
|
|
| 1934 | - massert (isNullaryRepDataCon con)
|
|
| 1935 | - return (unitOL (PACK con 0), szb)
|
|
| 1933 | + Just con
|
|
| 1934 | + -- See Note [LFInfo of DataCon workers and wrappers] in GHC.Types.Id.Make.
|
|
| 1935 | + | isNullaryRepDataCon con ->
|
|
| 1936 | + return (unitOL (PACK con 0), szb)
|
|
| 1936 | 1937 | |
| 1937 | - Nothing
|
|
| 1938 | + _
|
|
| 1938 | 1939 | -- see Note [Generating code for top-level string literal bindings]
|
| 1939 | 1940 | | isUnliftedType (idType var) -> do
|
| 1940 | 1941 | massert (idType var `eqType` addrPrimTy)
|
| ... | ... | @@ -240,7 +240,9 @@ tcMatches ctxt tc_body pat_tys rhs_ty (MG { mg_alts = L l matches |
| 240 | 240 | -- when in inference mode, so we must do it ourselves,
|
| 241 | 241 | -- here, using expTypeToType
|
| 242 | 242 | = do { tcEmitBindingUsage bottomUE
|
| 243 | - ; pat_ty <- case pat_tys of -- See Note [Pattern types for EmptyCase]
|
|
| 243 | + -- See Note [Pattern types for EmptyCase]
|
|
| 244 | + ; let vis_pat_tys = filter isVisibleExpPatType pat_tys
|
|
| 245 | + ; pat_ty <- case vis_pat_tys of
|
|
| 244 | 246 | [ExpFunPatTy t] -> scaledExpTypeToType t
|
| 245 | 247 | [ExpForAllPatTy tvb] -> failWithTc $ TcRnEmptyCase ctxt (EmptyCaseForall tvb)
|
| 246 | 248 | [] -> panic "tcMatches: no arguments in EmptyCase"
|
| ... | ... | @@ -275,8 +277,15 @@ tcMatches ctxt tc_body pat_tys rhs_ty (MG { mg_alts = L l matches |
| 275 | 277 | In tcMatches, we might encounter an empty list of matches if the user wrote
|
| 276 | 278 | `case x of {}` or `\case {}`.
|
| 277 | 279 | |
| 278 | -* First of all, both `case x of {}` and `\case {}` match on exactly one
|
|
| 279 | - argument, so we expect pat_tys to be a singleton list [pat_ty] and panic otherwise.
|
|
| 280 | +* First of all, both `case x of {}` and `\case {}` match on exactly one visible
|
|
| 281 | + argument, which follows from
|
|
| 282 | + |
|
| 283 | + checkArgCounts :: MatchGroup GhcRn ... -> TcM VisArity
|
|
| 284 | + checkArgCounts (MG { mg_alts = L _ [] })
|
|
| 285 | + = return 1
|
|
| 286 | + ...
|
|
| 287 | + |
|
| 288 | + So we expect vis_pat_tys to be a singleton list [pat_ty] and panic otherwise.
|
|
| 280 | 289 | |
| 281 | 290 | Multi-case `\cases {}` can't violate this assumption in `tcMatches` because it
|
| 282 | 291 | must have been rejected earlier in `rnMatchGroup`.
|
| ... | ... | @@ -293,7 +302,7 @@ In tcMatches, we might encounter an empty list of matches if the user wrote |
| 293 | 302 | This is not valid and it used to trigger a panic in pmcMatches (#25004).
|
| 294 | 303 | We reject it by inspecting the expected pattern type:
|
| 295 | 304 | |
| 296 | - ; pat_ty <- case pat_tys of
|
|
| 305 | + ; pat_ty <- case vis_pat_tys of
|
|
| 297 | 306 | [ExpFunPatTy t] -> ... -- value argument, ok
|
| 298 | 307 | [ExpForAllPatTy tvb] -> ... -- type argument, error!
|
| 299 | 308 |
| 1 | +#include "Rts.h"
|
|
| 2 | +#include "Prelude.h"
|
|
| 3 | +#include "BuiltinClosures.h"
|
|
| 4 | + |
|
| 5 | +/*
|
|
| 6 | + * Note [CHARLIKE and INTLIKE closures]
|
|
| 7 | + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
| 8 | + * These are static representations of Chars and small Ints, so that
|
|
| 9 | + * we can remove dynamic Chars and Ints during garbage collection and
|
|
| 10 | + * replace them with references to the static objects.
|
|
| 11 | + */
|
|
| 12 | + |
|
| 13 | +StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1];
|
|
| 14 | +StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1];
|
|
| 15 | + |
|
| 16 | +void initBuiltinClosures(void) {
|
|
| 17 | + // INTLIKE closures
|
|
| 18 | + for (int i = MIN_INTLIKE; i <= MAX_INTLIKE; i++) {
|
|
| 19 | + StgIntCharlikeClosure *c = &stg_INTLIKE_closure[i - MIN_INTLIKE];
|
|
| 20 | + SET_HDR((StgClosure* ) c, Izh_con_info, CCS_SYSTEM_OR_NULL);
|
|
| 21 | + c->data = i;
|
|
| 22 | + }
|
|
| 23 | + |
|
| 24 | + // CHARLIKE closures
|
|
| 25 | + for (int i = MIN_CHARLIKE; i <= MAX_CHARLIKE; i++) {
|
|
| 26 | + StgIntCharlikeClosure *c = &stg_CHARLIKE_closure[i - MIN_CHARLIKE];
|
|
| 27 | + SET_HDR((StgClosure* ) c, Czh_con_info, CCS_SYSTEM_OR_NULL);
|
|
| 28 | + c->data = i;
|
|
| 29 | + }
|
|
| 30 | +} |
| 1 | +/*
|
|
| 2 | + * (c) The GHC Team, 2025-2026
|
|
| 3 | + *
|
|
| 4 | + * RTS/ghc-internal interface
|
|
| 5 | + *
|
|
| 6 | + */
|
|
| 7 | + |
|
| 8 | +#pragma once
|
|
| 9 | + |
|
| 10 | +#include "BeginPrivate.h"
|
|
| 11 | + |
|
| 12 | +void initBuiltinClosures(void);
|
|
| 13 | + |
|
| 14 | +#include "EndPrivate.h" |
| ... | ... | @@ -1874,7 +1874,6 @@ run_BCO: |
| 1874 | 1874 | // n_nptrs=1, n_ptrs=0.
|
| 1875 | 1875 | ASSERT(n_ptrs + n_nptrs == n_words || (n_nptrs == 1 && n_ptrs == 0));
|
| 1876 | 1876 | ASSERT(n_ptrs + n_nptrs > 0);
|
| 1877 | - //ASSERT(n_words > 0); // We shouldn't ever need to allocate nullary constructors
|
|
| 1878 | 1877 | for (W_ i = 0; i < n_words; i++) {
|
| 1879 | 1878 | con->payload[i] = (StgClosure*)ReadSpW(i);
|
| 1880 | 1879 | }
|
| ... | ... | @@ -14,6 +14,7 @@ |
| 14 | 14 | #include "linker/MMap.h"
|
| 15 | 15 | #include "RtsFlags.h"
|
| 16 | 16 | #include "RtsUtils.h"
|
| 17 | +#include "BuiltinClosures.h"
|
|
| 17 | 18 | #include "Prelude.h"
|
| 18 | 19 | #include "Printer.h" /* DEBUG_LoadSymbols */
|
| 19 | 20 | #include "Schedule.h" /* initScheduler */
|
| ... | ... | @@ -378,6 +379,9 @@ hs_init_ghc(int *argc, char **argv[], RtsConfig rts_config) |
| 378 | 379 | traceInitEvent(traceOSProcessInfo);
|
| 379 | 380 | flushTrace();
|
| 380 | 381 | |
| 382 | + /* initialize INTLIKE and CHARLIKE closures */
|
|
| 383 | + initBuiltinClosures();
|
|
| 384 | + |
|
| 381 | 385 | /* initialize the storage manager */
|
| 382 | 386 | initStorage();
|
| 383 | 387 |
| ... | ... | @@ -13,8 +13,6 @@ |
| 13 | 13 | #include "Cmm.h"
|
| 14 | 14 | |
| 15 | 15 | import pthread_mutex_lock;
|
| 16 | -import ghczmprim_GHCziTypes_Czh_info;
|
|
| 17 | -import ghczmprim_GHCziTypes_Izh_info;
|
|
| 18 | 16 | import AcquireSRWLockExclusive;
|
| 19 | 17 | import ReleaseSRWLockExclusive;
|
| 20 | 18 | |
| ... | ... | @@ -968,571 +966,6 @@ INFO_TABLE( stg_COMPACT_NFDATA_DIRTY, 0, 9, COMPACT_NFDATA, "COMPACT_NFDATA", "C |
| 968 | 966 | ()
|
| 969 | 967 | { foreign "C" barf("COMPACT_NFDATA_DIRTY object (%p) entered!", R1) never returns; }
|
| 970 | 968 | |
| 971 | -/* ----------------------------------------------------------------------------
|
|
| 972 | - Note [CHARLIKE and INTLIKE closures]
|
|
| 973 | - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
| 974 | - These are static representations of Chars and small Ints, so that
|
|
| 975 | - we can remove dynamic Chars and Ints during garbage collection and
|
|
| 976 | - replace them with references to the static objects.
|
|
| 977 | 969 | ------------------------------------------------------------------------- */
|
| 978 | 970 | |
| 979 | -#if defined(COMPILING_WINDOWS_DLL)
|
|
| 980 | -/*
|
|
| 981 | - * When sticking the RTS in a Windows DLL, we delay populating the
|
|
| 982 | - * Charlike and Intlike tables until load-time, which is only
|
|
| 983 | - * when we've got the real addresses to the C# and I# closures.
|
|
| 984 | - *
|
|
| 985 | - * -- this is currently broken BL 2009/11/14.
|
|
| 986 | - * we don't rewrite to static closures at all with Windows DLLs.
|
|
| 987 | - */
|
|
| 988 | -// #warning Is this correct? _imp is a pointer!
|
|
| 989 | -#define Char_hash_con_info _imp__ghczmprim_GHCziTypes_Czh_con_info
|
|
| 990 | -#define Int_hash_con_info _imp__ghczmprim_GHCziTypes_Izh_con_info
|
|
| 991 | -#else
|
|
| 992 | -#define Char_hash_con_info ghczmprim_GHCziTypes_Czh_con_info
|
|
| 993 | -#define Int_hash_con_info ghczmprim_GHCziTypes_Izh_con_info
|
|
| 994 | -#endif
|
|
| 995 | - |
|
| 996 | - |
|
| 997 | -#define CHARLIKE_HDR(n) CLOSURE(Char_hash_con_info, n)
|
|
| 998 | -#define INTLIKE_HDR(n) CLOSURE(Int_hash_con_info, n)
|
|
| 999 | - |
|
| 1000 | -#if !(defined(COMPILING_WINDOWS_DLL))
|
|
| 1001 | -section "data" {
|
|
| 1002 | - stg_CHARLIKE_closure:
|
|
| 1003 | - CHARLIKE_HDR(0)
|
|
| 1004 | - CHARLIKE_HDR(1)
|
|
| 1005 | - CHARLIKE_HDR(2)
|
|
| 1006 | - CHARLIKE_HDR(3)
|
|
| 1007 | - CHARLIKE_HDR(4)
|
|
| 1008 | - CHARLIKE_HDR(5)
|
|
| 1009 | - CHARLIKE_HDR(6)
|
|
| 1010 | - CHARLIKE_HDR(7)
|
|
| 1011 | - CHARLIKE_HDR(8)
|
|
| 1012 | - CHARLIKE_HDR(9)
|
|
| 1013 | - CHARLIKE_HDR(10)
|
|
| 1014 | - CHARLIKE_HDR(11)
|
|
| 1015 | - CHARLIKE_HDR(12)
|
|
| 1016 | - CHARLIKE_HDR(13)
|
|
| 1017 | - CHARLIKE_HDR(14)
|
|
| 1018 | - CHARLIKE_HDR(15)
|
|
| 1019 | - CHARLIKE_HDR(16)
|
|
| 1020 | - CHARLIKE_HDR(17)
|
|
| 1021 | - CHARLIKE_HDR(18)
|
|
| 1022 | - CHARLIKE_HDR(19)
|
|
| 1023 | - CHARLIKE_HDR(20)
|
|
| 1024 | - CHARLIKE_HDR(21)
|
|
| 1025 | - CHARLIKE_HDR(22)
|
|
| 1026 | - CHARLIKE_HDR(23)
|
|
| 1027 | - CHARLIKE_HDR(24)
|
|
| 1028 | - CHARLIKE_HDR(25)
|
|
| 1029 | - CHARLIKE_HDR(26)
|
|
| 1030 | - CHARLIKE_HDR(27)
|
|
| 1031 | - CHARLIKE_HDR(28)
|
|
| 1032 | - CHARLIKE_HDR(29)
|
|
| 1033 | - CHARLIKE_HDR(30)
|
|
| 1034 | - CHARLIKE_HDR(31)
|
|
| 1035 | - CHARLIKE_HDR(32)
|
|
| 1036 | - CHARLIKE_HDR(33)
|
|
| 1037 | - CHARLIKE_HDR(34)
|
|
| 1038 | - CHARLIKE_HDR(35)
|
|
| 1039 | - CHARLIKE_HDR(36)
|
|
| 1040 | - CHARLIKE_HDR(37)
|
|
| 1041 | - CHARLIKE_HDR(38)
|
|
| 1042 | - CHARLIKE_HDR(39)
|
|
| 1043 | - CHARLIKE_HDR(40)
|
|
| 1044 | - CHARLIKE_HDR(41)
|
|
| 1045 | - CHARLIKE_HDR(42)
|
|
| 1046 | - CHARLIKE_HDR(43)
|
|
| 1047 | - CHARLIKE_HDR(44)
|
|
| 1048 | - CHARLIKE_HDR(45)
|
|
| 1049 | - CHARLIKE_HDR(46)
|
|
| 1050 | - CHARLIKE_HDR(47)
|
|
| 1051 | - CHARLIKE_HDR(48)
|
|
| 1052 | - CHARLIKE_HDR(49)
|
|
| 1053 | - CHARLIKE_HDR(50)
|
|
| 1054 | - CHARLIKE_HDR(51)
|
|
| 1055 | - CHARLIKE_HDR(52)
|
|
| 1056 | - CHARLIKE_HDR(53)
|
|
| 1057 | - CHARLIKE_HDR(54)
|
|
| 1058 | - CHARLIKE_HDR(55)
|
|
| 1059 | - CHARLIKE_HDR(56)
|
|
| 1060 | - CHARLIKE_HDR(57)
|
|
| 1061 | - CHARLIKE_HDR(58)
|
|
| 1062 | - CHARLIKE_HDR(59)
|
|
| 1063 | - CHARLIKE_HDR(60)
|
|
| 1064 | - CHARLIKE_HDR(61)
|
|
| 1065 | - CHARLIKE_HDR(62)
|
|
| 1066 | - CHARLIKE_HDR(63)
|
|
| 1067 | - CHARLIKE_HDR(64)
|
|
| 1068 | - CHARLIKE_HDR(65)
|
|
| 1069 | - CHARLIKE_HDR(66)
|
|
| 1070 | - CHARLIKE_HDR(67)
|
|
| 1071 | - CHARLIKE_HDR(68)
|
|
| 1072 | - CHARLIKE_HDR(69)
|
|
| 1073 | - CHARLIKE_HDR(70)
|
|
| 1074 | - CHARLIKE_HDR(71)
|
|
| 1075 | - CHARLIKE_HDR(72)
|
|
| 1076 | - CHARLIKE_HDR(73)
|
|
| 1077 | - CHARLIKE_HDR(74)
|
|
| 1078 | - CHARLIKE_HDR(75)
|
|
| 1079 | - CHARLIKE_HDR(76)
|
|
| 1080 | - CHARLIKE_HDR(77)
|
|
| 1081 | - CHARLIKE_HDR(78)
|
|
| 1082 | - CHARLIKE_HDR(79)
|
|
| 1083 | - CHARLIKE_HDR(80)
|
|
| 1084 | - CHARLIKE_HDR(81)
|
|
| 1085 | - CHARLIKE_HDR(82)
|
|
| 1086 | - CHARLIKE_HDR(83)
|
|
| 1087 | - CHARLIKE_HDR(84)
|
|
| 1088 | - CHARLIKE_HDR(85)
|
|
| 1089 | - CHARLIKE_HDR(86)
|
|
| 1090 | - CHARLIKE_HDR(87)
|
|
| 1091 | - CHARLIKE_HDR(88)
|
|
| 1092 | - CHARLIKE_HDR(89)
|
|
| 1093 | - CHARLIKE_HDR(90)
|
|
| 1094 | - CHARLIKE_HDR(91)
|
|
| 1095 | - CHARLIKE_HDR(92)
|
|
| 1096 | - CHARLIKE_HDR(93)
|
|
| 1097 | - CHARLIKE_HDR(94)
|
|
| 1098 | - CHARLIKE_HDR(95)
|
|
| 1099 | - CHARLIKE_HDR(96)
|
|
| 1100 | - CHARLIKE_HDR(97)
|
|
| 1101 | - CHARLIKE_HDR(98)
|
|
| 1102 | - CHARLIKE_HDR(99)
|
|
| 1103 | - CHARLIKE_HDR(100)
|
|
| 1104 | - CHARLIKE_HDR(101)
|
|
| 1105 | - CHARLIKE_HDR(102)
|
|
| 1106 | - CHARLIKE_HDR(103)
|
|
| 1107 | - CHARLIKE_HDR(104)
|
|
| 1108 | - CHARLIKE_HDR(105)
|
|
| 1109 | - CHARLIKE_HDR(106)
|
|
| 1110 | - CHARLIKE_HDR(107)
|
|
| 1111 | - CHARLIKE_HDR(108)
|
|
| 1112 | - CHARLIKE_HDR(109)
|
|
| 1113 | - CHARLIKE_HDR(110)
|
|
| 1114 | - CHARLIKE_HDR(111)
|
|
| 1115 | - CHARLIKE_HDR(112)
|
|
| 1116 | - CHARLIKE_HDR(113)
|
|
| 1117 | - CHARLIKE_HDR(114)
|
|
| 1118 | - CHARLIKE_HDR(115)
|
|
| 1119 | - CHARLIKE_HDR(116)
|
|
| 1120 | - CHARLIKE_HDR(117)
|
|
| 1121 | - CHARLIKE_HDR(118)
|
|
| 1122 | - CHARLIKE_HDR(119)
|
|
| 1123 | - CHARLIKE_HDR(120)
|
|
| 1124 | - CHARLIKE_HDR(121)
|
|
| 1125 | - CHARLIKE_HDR(122)
|
|
| 1126 | - CHARLIKE_HDR(123)
|
|
| 1127 | - CHARLIKE_HDR(124)
|
|
| 1128 | - CHARLIKE_HDR(125)
|
|
| 1129 | - CHARLIKE_HDR(126)
|
|
| 1130 | - CHARLIKE_HDR(127)
|
|
| 1131 | - CHARLIKE_HDR(128)
|
|
| 1132 | - CHARLIKE_HDR(129)
|
|
| 1133 | - CHARLIKE_HDR(130)
|
|
| 1134 | - CHARLIKE_HDR(131)
|
|
| 1135 | - CHARLIKE_HDR(132)
|
|
| 1136 | - CHARLIKE_HDR(133)
|
|
| 1137 | - CHARLIKE_HDR(134)
|
|
| 1138 | - CHARLIKE_HDR(135)
|
|
| 1139 | - CHARLIKE_HDR(136)
|
|
| 1140 | - CHARLIKE_HDR(137)
|
|
| 1141 | - CHARLIKE_HDR(138)
|
|
| 1142 | - CHARLIKE_HDR(139)
|
|
| 1143 | - CHARLIKE_HDR(140)
|
|
| 1144 | - CHARLIKE_HDR(141)
|
|
| 1145 | - CHARLIKE_HDR(142)
|
|
| 1146 | - CHARLIKE_HDR(143)
|
|
| 1147 | - CHARLIKE_HDR(144)
|
|
| 1148 | - CHARLIKE_HDR(145)
|
|
| 1149 | - CHARLIKE_HDR(146)
|
|
| 1150 | - CHARLIKE_HDR(147)
|
|
| 1151 | - CHARLIKE_HDR(148)
|
|
| 1152 | - CHARLIKE_HDR(149)
|
|
| 1153 | - CHARLIKE_HDR(150)
|
|
| 1154 | - CHARLIKE_HDR(151)
|
|
| 1155 | - CHARLIKE_HDR(152)
|
|
| 1156 | - CHARLIKE_HDR(153)
|
|
| 1157 | - CHARLIKE_HDR(154)
|
|
| 1158 | - CHARLIKE_HDR(155)
|
|
| 1159 | - CHARLIKE_HDR(156)
|
|
| 1160 | - CHARLIKE_HDR(157)
|
|
| 1161 | - CHARLIKE_HDR(158)
|
|
| 1162 | - CHARLIKE_HDR(159)
|
|
| 1163 | - CHARLIKE_HDR(160)
|
|
| 1164 | - CHARLIKE_HDR(161)
|
|
| 1165 | - CHARLIKE_HDR(162)
|
|
| 1166 | - CHARLIKE_HDR(163)
|
|
| 1167 | - CHARLIKE_HDR(164)
|
|
| 1168 | - CHARLIKE_HDR(165)
|
|
| 1169 | - CHARLIKE_HDR(166)
|
|
| 1170 | - CHARLIKE_HDR(167)
|
|
| 1171 | - CHARLIKE_HDR(168)
|
|
| 1172 | - CHARLIKE_HDR(169)
|
|
| 1173 | - CHARLIKE_HDR(170)
|
|
| 1174 | - CHARLIKE_HDR(171)
|
|
| 1175 | - CHARLIKE_HDR(172)
|
|
| 1176 | - CHARLIKE_HDR(173)
|
|
| 1177 | - CHARLIKE_HDR(174)
|
|
| 1178 | - CHARLIKE_HDR(175)
|
|
| 1179 | - CHARLIKE_HDR(176)
|
|
| 1180 | - CHARLIKE_HDR(177)
|
|
| 1181 | - CHARLIKE_HDR(178)
|
|
| 1182 | - CHARLIKE_HDR(179)
|
|
| 1183 | - CHARLIKE_HDR(180)
|
|
| 1184 | - CHARLIKE_HDR(181)
|
|
| 1185 | - CHARLIKE_HDR(182)
|
|
| 1186 | - CHARLIKE_HDR(183)
|
|
| 1187 | - CHARLIKE_HDR(184)
|
|
| 1188 | - CHARLIKE_HDR(185)
|
|
| 1189 | - CHARLIKE_HDR(186)
|
|
| 1190 | - CHARLIKE_HDR(187)
|
|
| 1191 | - CHARLIKE_HDR(188)
|
|
| 1192 | - CHARLIKE_HDR(189)
|
|
| 1193 | - CHARLIKE_HDR(190)
|
|
| 1194 | - CHARLIKE_HDR(191)
|
|
| 1195 | - CHARLIKE_HDR(192)
|
|
| 1196 | - CHARLIKE_HDR(193)
|
|
| 1197 | - CHARLIKE_HDR(194)
|
|
| 1198 | - CHARLIKE_HDR(195)
|
|
| 1199 | - CHARLIKE_HDR(196)
|
|
| 1200 | - CHARLIKE_HDR(197)
|
|
| 1201 | - CHARLIKE_HDR(198)
|
|
| 1202 | - CHARLIKE_HDR(199)
|
|
| 1203 | - CHARLIKE_HDR(200)
|
|
| 1204 | - CHARLIKE_HDR(201)
|
|
| 1205 | - CHARLIKE_HDR(202)
|
|
| 1206 | - CHARLIKE_HDR(203)
|
|
| 1207 | - CHARLIKE_HDR(204)
|
|
| 1208 | - CHARLIKE_HDR(205)
|
|
| 1209 | - CHARLIKE_HDR(206)
|
|
| 1210 | - CHARLIKE_HDR(207)
|
|
| 1211 | - CHARLIKE_HDR(208)
|
|
| 1212 | - CHARLIKE_HDR(209)
|
|
| 1213 | - CHARLIKE_HDR(210)
|
|
| 1214 | - CHARLIKE_HDR(211)
|
|
| 1215 | - CHARLIKE_HDR(212)
|
|
| 1216 | - CHARLIKE_HDR(213)
|
|
| 1217 | - CHARLIKE_HDR(214)
|
|
| 1218 | - CHARLIKE_HDR(215)
|
|
| 1219 | - CHARLIKE_HDR(216)
|
|
| 1220 | - CHARLIKE_HDR(217)
|
|
| 1221 | - CHARLIKE_HDR(218)
|
|
| 1222 | - CHARLIKE_HDR(219)
|
|
| 1223 | - CHARLIKE_HDR(220)
|
|
| 1224 | - CHARLIKE_HDR(221)
|
|
| 1225 | - CHARLIKE_HDR(222)
|
|
| 1226 | - CHARLIKE_HDR(223)
|
|
| 1227 | - CHARLIKE_HDR(224)
|
|
| 1228 | - CHARLIKE_HDR(225)
|
|
| 1229 | - CHARLIKE_HDR(226)
|
|
| 1230 | - CHARLIKE_HDR(227)
|
|
| 1231 | - CHARLIKE_HDR(228)
|
|
| 1232 | - CHARLIKE_HDR(229)
|
|
| 1233 | - CHARLIKE_HDR(230)
|
|
| 1234 | - CHARLIKE_HDR(231)
|
|
| 1235 | - CHARLIKE_HDR(232)
|
|
| 1236 | - CHARLIKE_HDR(233)
|
|
| 1237 | - CHARLIKE_HDR(234)
|
|
| 1238 | - CHARLIKE_HDR(235)
|
|
| 1239 | - CHARLIKE_HDR(236)
|
|
| 1240 | - CHARLIKE_HDR(237)
|
|
| 1241 | - CHARLIKE_HDR(238)
|
|
| 1242 | - CHARLIKE_HDR(239)
|
|
| 1243 | - CHARLIKE_HDR(240)
|
|
| 1244 | - CHARLIKE_HDR(241)
|
|
| 1245 | - CHARLIKE_HDR(242)
|
|
| 1246 | - CHARLIKE_HDR(243)
|
|
| 1247 | - CHARLIKE_HDR(244)
|
|
| 1248 | - CHARLIKE_HDR(245)
|
|
| 1249 | - CHARLIKE_HDR(246)
|
|
| 1250 | - CHARLIKE_HDR(247)
|
|
| 1251 | - CHARLIKE_HDR(248)
|
|
| 1252 | - CHARLIKE_HDR(249)
|
|
| 1253 | - CHARLIKE_HDR(250)
|
|
| 1254 | - CHARLIKE_HDR(251)
|
|
| 1255 | - CHARLIKE_HDR(252)
|
|
| 1256 | - CHARLIKE_HDR(253)
|
|
| 1257 | - CHARLIKE_HDR(254)
|
|
| 1258 | - CHARLIKE_HDR(255)
|
|
| 1259 | -}
|
|
| 1260 | - |
|
| 1261 | -section "data" {
|
|
| 1262 | - stg_INTLIKE_closure:
|
|
| 1263 | - INTLIKE_HDR(-16) /* MIN_INTLIKE == -16 */
|
|
| 1264 | - INTLIKE_HDR(-15)
|
|
| 1265 | - INTLIKE_HDR(-14)
|
|
| 1266 | - INTLIKE_HDR(-13)
|
|
| 1267 | - INTLIKE_HDR(-12)
|
|
| 1268 | - INTLIKE_HDR(-11)
|
|
| 1269 | - INTLIKE_HDR(-10)
|
|
| 1270 | - INTLIKE_HDR(-9)
|
|
| 1271 | - INTLIKE_HDR(-8)
|
|
| 1272 | - INTLIKE_HDR(-7)
|
|
| 1273 | - INTLIKE_HDR(-6)
|
|
| 1274 | - INTLIKE_HDR(-5)
|
|
| 1275 | - INTLIKE_HDR(-4)
|
|
| 1276 | - INTLIKE_HDR(-3)
|
|
| 1277 | - INTLIKE_HDR(-2)
|
|
| 1278 | - INTLIKE_HDR(-1)
|
|
| 1279 | - INTLIKE_HDR(0)
|
|
| 1280 | - INTLIKE_HDR(1)
|
|
| 1281 | - INTLIKE_HDR(2)
|
|
| 1282 | - INTLIKE_HDR(3)
|
|
| 1283 | - INTLIKE_HDR(4)
|
|
| 1284 | - INTLIKE_HDR(5)
|
|
| 1285 | - INTLIKE_HDR(6)
|
|
| 1286 | - INTLIKE_HDR(7)
|
|
| 1287 | - INTLIKE_HDR(8)
|
|
| 1288 | - INTLIKE_HDR(9)
|
|
| 1289 | - INTLIKE_HDR(10)
|
|
| 1290 | - INTLIKE_HDR(11)
|
|
| 1291 | - INTLIKE_HDR(12)
|
|
| 1292 | - INTLIKE_HDR(13)
|
|
| 1293 | - INTLIKE_HDR(14)
|
|
| 1294 | - INTLIKE_HDR(15)
|
|
| 1295 | - INTLIKE_HDR(16)
|
|
| 1296 | - INTLIKE_HDR(17)
|
|
| 1297 | - INTLIKE_HDR(18)
|
|
| 1298 | - INTLIKE_HDR(19)
|
|
| 1299 | - INTLIKE_HDR(20)
|
|
| 1300 | - INTLIKE_HDR(21)
|
|
| 1301 | - INTLIKE_HDR(22)
|
|
| 1302 | - INTLIKE_HDR(23)
|
|
| 1303 | - INTLIKE_HDR(24)
|
|
| 1304 | - INTLIKE_HDR(25)
|
|
| 1305 | - INTLIKE_HDR(26)
|
|
| 1306 | - INTLIKE_HDR(27)
|
|
| 1307 | - INTLIKE_HDR(28)
|
|
| 1308 | - INTLIKE_HDR(29)
|
|
| 1309 | - INTLIKE_HDR(30)
|
|
| 1310 | - INTLIKE_HDR(31)
|
|
| 1311 | - INTLIKE_HDR(32)
|
|
| 1312 | - INTLIKE_HDR(33)
|
|
| 1313 | - INTLIKE_HDR(34)
|
|
| 1314 | - INTLIKE_HDR(35)
|
|
| 1315 | - INTLIKE_HDR(36)
|
|
| 1316 | - INTLIKE_HDR(37)
|
|
| 1317 | - INTLIKE_HDR(38)
|
|
| 1318 | - INTLIKE_HDR(39)
|
|
| 1319 | - INTLIKE_HDR(40)
|
|
| 1320 | - INTLIKE_HDR(41)
|
|
| 1321 | - INTLIKE_HDR(42)
|
|
| 1322 | - INTLIKE_HDR(43)
|
|
| 1323 | - INTLIKE_HDR(44)
|
|
| 1324 | - INTLIKE_HDR(45)
|
|
| 1325 | - INTLIKE_HDR(46)
|
|
| 1326 | - INTLIKE_HDR(47)
|
|
| 1327 | - INTLIKE_HDR(48)
|
|
| 1328 | - INTLIKE_HDR(49)
|
|
| 1329 | - INTLIKE_HDR(50)
|
|
| 1330 | - INTLIKE_HDR(51)
|
|
| 1331 | - INTLIKE_HDR(52)
|
|
| 1332 | - INTLIKE_HDR(53)
|
|
| 1333 | - INTLIKE_HDR(54)
|
|
| 1334 | - INTLIKE_HDR(55)
|
|
| 1335 | - INTLIKE_HDR(56)
|
|
| 1336 | - INTLIKE_HDR(57)
|
|
| 1337 | - INTLIKE_HDR(58)
|
|
| 1338 | - INTLIKE_HDR(59)
|
|
| 1339 | - INTLIKE_HDR(60)
|
|
| 1340 | - INTLIKE_HDR(61)
|
|
| 1341 | - INTLIKE_HDR(62)
|
|
| 1342 | - INTLIKE_HDR(63)
|
|
| 1343 | - INTLIKE_HDR(64)
|
|
| 1344 | - INTLIKE_HDR(65)
|
|
| 1345 | - INTLIKE_HDR(66)
|
|
| 1346 | - INTLIKE_HDR(67)
|
|
| 1347 | - INTLIKE_HDR(68)
|
|
| 1348 | - INTLIKE_HDR(69)
|
|
| 1349 | - INTLIKE_HDR(70)
|
|
| 1350 | - INTLIKE_HDR(71)
|
|
| 1351 | - INTLIKE_HDR(72)
|
|
| 1352 | - INTLIKE_HDR(73)
|
|
| 1353 | - INTLIKE_HDR(74)
|
|
| 1354 | - INTLIKE_HDR(75)
|
|
| 1355 | - INTLIKE_HDR(76)
|
|
| 1356 | - INTLIKE_HDR(77)
|
|
| 1357 | - INTLIKE_HDR(78)
|
|
| 1358 | - INTLIKE_HDR(79)
|
|
| 1359 | - INTLIKE_HDR(80)
|
|
| 1360 | - INTLIKE_HDR(81)
|
|
| 1361 | - INTLIKE_HDR(82)
|
|
| 1362 | - INTLIKE_HDR(83)
|
|
| 1363 | - INTLIKE_HDR(84)
|
|
| 1364 | - INTLIKE_HDR(85)
|
|
| 1365 | - INTLIKE_HDR(86)
|
|
| 1366 | - INTLIKE_HDR(87)
|
|
| 1367 | - INTLIKE_HDR(88)
|
|
| 1368 | - INTLIKE_HDR(89)
|
|
| 1369 | - INTLIKE_HDR(90)
|
|
| 1370 | - INTLIKE_HDR(91)
|
|
| 1371 | - INTLIKE_HDR(92)
|
|
| 1372 | - INTLIKE_HDR(93)
|
|
| 1373 | - INTLIKE_HDR(94)
|
|
| 1374 | - INTLIKE_HDR(95)
|
|
| 1375 | - INTLIKE_HDR(96)
|
|
| 1376 | - INTLIKE_HDR(97)
|
|
| 1377 | - INTLIKE_HDR(98)
|
|
| 1378 | - INTLIKE_HDR(99)
|
|
| 1379 | - INTLIKE_HDR(100)
|
|
| 1380 | - INTLIKE_HDR(101)
|
|
| 1381 | - INTLIKE_HDR(102)
|
|
| 1382 | - INTLIKE_HDR(103)
|
|
| 1383 | - INTLIKE_HDR(104)
|
|
| 1384 | - INTLIKE_HDR(105)
|
|
| 1385 | - INTLIKE_HDR(106)
|
|
| 1386 | - INTLIKE_HDR(107)
|
|
| 1387 | - INTLIKE_HDR(108)
|
|
| 1388 | - INTLIKE_HDR(109)
|
|
| 1389 | - INTLIKE_HDR(110)
|
|
| 1390 | - INTLIKE_HDR(111)
|
|
| 1391 | - INTLIKE_HDR(112)
|
|
| 1392 | - INTLIKE_HDR(113)
|
|
| 1393 | - INTLIKE_HDR(114)
|
|
| 1394 | - INTLIKE_HDR(115)
|
|
| 1395 | - INTLIKE_HDR(116)
|
|
| 1396 | - INTLIKE_HDR(117)
|
|
| 1397 | - INTLIKE_HDR(118)
|
|
| 1398 | - INTLIKE_HDR(119)
|
|
| 1399 | - INTLIKE_HDR(120)
|
|
| 1400 | - INTLIKE_HDR(121)
|
|
| 1401 | - INTLIKE_HDR(122)
|
|
| 1402 | - INTLIKE_HDR(123)
|
|
| 1403 | - INTLIKE_HDR(124)
|
|
| 1404 | - INTLIKE_HDR(125)
|
|
| 1405 | - INTLIKE_HDR(126)
|
|
| 1406 | - INTLIKE_HDR(127)
|
|
| 1407 | - INTLIKE_HDR(128)
|
|
| 1408 | - INTLIKE_HDR(129)
|
|
| 1409 | - INTLIKE_HDR(130)
|
|
| 1410 | - INTLIKE_HDR(131)
|
|
| 1411 | - INTLIKE_HDR(132)
|
|
| 1412 | - INTLIKE_HDR(133)
|
|
| 1413 | - INTLIKE_HDR(134)
|
|
| 1414 | - INTLIKE_HDR(135)
|
|
| 1415 | - INTLIKE_HDR(136)
|
|
| 1416 | - INTLIKE_HDR(137)
|
|
| 1417 | - INTLIKE_HDR(138)
|
|
| 1418 | - INTLIKE_HDR(139)
|
|
| 1419 | - INTLIKE_HDR(140)
|
|
| 1420 | - INTLIKE_HDR(141)
|
|
| 1421 | - INTLIKE_HDR(142)
|
|
| 1422 | - INTLIKE_HDR(143)
|
|
| 1423 | - INTLIKE_HDR(144)
|
|
| 1424 | - INTLIKE_HDR(145)
|
|
| 1425 | - INTLIKE_HDR(146)
|
|
| 1426 | - INTLIKE_HDR(147)
|
|
| 1427 | - INTLIKE_HDR(148)
|
|
| 1428 | - INTLIKE_HDR(149)
|
|
| 1429 | - INTLIKE_HDR(150)
|
|
| 1430 | - INTLIKE_HDR(151)
|
|
| 1431 | - INTLIKE_HDR(152)
|
|
| 1432 | - INTLIKE_HDR(153)
|
|
| 1433 | - INTLIKE_HDR(154)
|
|
| 1434 | - INTLIKE_HDR(155)
|
|
| 1435 | - INTLIKE_HDR(156)
|
|
| 1436 | - INTLIKE_HDR(157)
|
|
| 1437 | - INTLIKE_HDR(158)
|
|
| 1438 | - INTLIKE_HDR(159)
|
|
| 1439 | - INTLIKE_HDR(160)
|
|
| 1440 | - INTLIKE_HDR(161)
|
|
| 1441 | - INTLIKE_HDR(162)
|
|
| 1442 | - INTLIKE_HDR(163)
|
|
| 1443 | - INTLIKE_HDR(164)
|
|
| 1444 | - INTLIKE_HDR(165)
|
|
| 1445 | - INTLIKE_HDR(166)
|
|
| 1446 | - INTLIKE_HDR(167)
|
|
| 1447 | - INTLIKE_HDR(168)
|
|
| 1448 | - INTLIKE_HDR(169)
|
|
| 1449 | - INTLIKE_HDR(170)
|
|
| 1450 | - INTLIKE_HDR(171)
|
|
| 1451 | - INTLIKE_HDR(172)
|
|
| 1452 | - INTLIKE_HDR(173)
|
|
| 1453 | - INTLIKE_HDR(174)
|
|
| 1454 | - INTLIKE_HDR(175)
|
|
| 1455 | - INTLIKE_HDR(176)
|
|
| 1456 | - INTLIKE_HDR(177)
|
|
| 1457 | - INTLIKE_HDR(178)
|
|
| 1458 | - INTLIKE_HDR(179)
|
|
| 1459 | - INTLIKE_HDR(180)
|
|
| 1460 | - INTLIKE_HDR(181)
|
|
| 1461 | - INTLIKE_HDR(182)
|
|
| 1462 | - INTLIKE_HDR(183)
|
|
| 1463 | - INTLIKE_HDR(184)
|
|
| 1464 | - INTLIKE_HDR(185)
|
|
| 1465 | - INTLIKE_HDR(186)
|
|
| 1466 | - INTLIKE_HDR(187)
|
|
| 1467 | - INTLIKE_HDR(188)
|
|
| 1468 | - INTLIKE_HDR(189)
|
|
| 1469 | - INTLIKE_HDR(190)
|
|
| 1470 | - INTLIKE_HDR(191)
|
|
| 1471 | - INTLIKE_HDR(192)
|
|
| 1472 | - INTLIKE_HDR(193)
|
|
| 1473 | - INTLIKE_HDR(194)
|
|
| 1474 | - INTLIKE_HDR(195)
|
|
| 1475 | - INTLIKE_HDR(196)
|
|
| 1476 | - INTLIKE_HDR(197)
|
|
| 1477 | - INTLIKE_HDR(198)
|
|
| 1478 | - INTLIKE_HDR(199)
|
|
| 1479 | - INTLIKE_HDR(200)
|
|
| 1480 | - INTLIKE_HDR(201)
|
|
| 1481 | - INTLIKE_HDR(202)
|
|
| 1482 | - INTLIKE_HDR(203)
|
|
| 1483 | - INTLIKE_HDR(204)
|
|
| 1484 | - INTLIKE_HDR(205)
|
|
| 1485 | - INTLIKE_HDR(206)
|
|
| 1486 | - INTLIKE_HDR(207)
|
|
| 1487 | - INTLIKE_HDR(208)
|
|
| 1488 | - INTLIKE_HDR(209)
|
|
| 1489 | - INTLIKE_HDR(210)
|
|
| 1490 | - INTLIKE_HDR(211)
|
|
| 1491 | - INTLIKE_HDR(212)
|
|
| 1492 | - INTLIKE_HDR(213)
|
|
| 1493 | - INTLIKE_HDR(214)
|
|
| 1494 | - INTLIKE_HDR(215)
|
|
| 1495 | - INTLIKE_HDR(216)
|
|
| 1496 | - INTLIKE_HDR(217)
|
|
| 1497 | - INTLIKE_HDR(218)
|
|
| 1498 | - INTLIKE_HDR(219)
|
|
| 1499 | - INTLIKE_HDR(220)
|
|
| 1500 | - INTLIKE_HDR(221)
|
|
| 1501 | - INTLIKE_HDR(222)
|
|
| 1502 | - INTLIKE_HDR(223)
|
|
| 1503 | - INTLIKE_HDR(224)
|
|
| 1504 | - INTLIKE_HDR(225)
|
|
| 1505 | - INTLIKE_HDR(226)
|
|
| 1506 | - INTLIKE_HDR(227)
|
|
| 1507 | - INTLIKE_HDR(228)
|
|
| 1508 | - INTLIKE_HDR(229)
|
|
| 1509 | - INTLIKE_HDR(230)
|
|
| 1510 | - INTLIKE_HDR(231)
|
|
| 1511 | - INTLIKE_HDR(232)
|
|
| 1512 | - INTLIKE_HDR(233)
|
|
| 1513 | - INTLIKE_HDR(234)
|
|
| 1514 | - INTLIKE_HDR(235)
|
|
| 1515 | - INTLIKE_HDR(236)
|
|
| 1516 | - INTLIKE_HDR(237)
|
|
| 1517 | - INTLIKE_HDR(238)
|
|
| 1518 | - INTLIKE_HDR(239)
|
|
| 1519 | - INTLIKE_HDR(240)
|
|
| 1520 | - INTLIKE_HDR(241)
|
|
| 1521 | - INTLIKE_HDR(242)
|
|
| 1522 | - INTLIKE_HDR(243)
|
|
| 1523 | - INTLIKE_HDR(244)
|
|
| 1524 | - INTLIKE_HDR(245)
|
|
| 1525 | - INTLIKE_HDR(246)
|
|
| 1526 | - INTLIKE_HDR(247)
|
|
| 1527 | - INTLIKE_HDR(248)
|
|
| 1528 | - INTLIKE_HDR(249)
|
|
| 1529 | - INTLIKE_HDR(250)
|
|
| 1530 | - INTLIKE_HDR(251)
|
|
| 1531 | - INTLIKE_HDR(252)
|
|
| 1532 | - INTLIKE_HDR(253)
|
|
| 1533 | - INTLIKE_HDR(254)
|
|
| 1534 | - INTLIKE_HDR(255) /* MAX_INTLIKE == 255
|
|
| 1535 | - See #16961 for why 255 */
|
|
| 1536 | -}
|
|
| 1537 | - |
|
| 1538 | -#endif |
|
| 971 | +CLOSURE(stg_TIMEOUT_QUEUE_EMPTY_closure,stg_TIMEOUT_QUEUE_EMPTY); |
| ... | ... | @@ -57,11 +57,12 @@ |
| 57 | 57 | #define MAX_SPEC_CONSTR_SIZE 2
|
| 58 | 58 | |
| 59 | 59 | /* Range of built-in table of static small int-like and char-like closures.
|
| 60 | + * Range is inclusive of both minimum and maximum.
|
|
| 60 | 61 | *
|
| 61 | 62 | * NB. This corresponds with the number of actual INTLIKE/CHARLIKE
|
| 62 | 63 | * closures defined in rts/StgMiscClosures.cmm.
|
| 63 | 64 | */
|
| 64 | -#define MAX_INTLIKE 255
|
|
| 65 | +#define MAX_INTLIKE 255 /* See #16961 for why 255 */
|
|
| 65 | 66 | #define MIN_INTLIKE (-16)
|
| 66 | 67 | |
| 67 | 68 | #define MAX_CHARLIKE 255
|
| ... | ... | @@ -268,8 +268,8 @@ RTS_ENTRY(stg_NO_FINALIZER); |
| 268 | 268 | extern DLL_IMPORT_RTS StgWordArray stg_CHARLIKE_closure;
|
| 269 | 269 | extern DLL_IMPORT_RTS StgWordArray stg_INTLIKE_closure;
|
| 270 | 270 | #else
|
| 271 | -extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_CHARLIKE_closure[];
|
|
| 272 | -extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_INTLIKE_closure[];
|
|
| 271 | +extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1];
|
|
| 272 | +extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1];
|
|
| 273 | 273 | #endif
|
| 274 | 274 | |
| 275 | 275 | /* StgStartup */
|
| ... | ... | @@ -381,6 +381,7 @@ library |
| 381 | 381 | adjustor/AdjustorPool.c
|
| 382 | 382 | ExecPage.c
|
| 383 | 383 | Arena.c
|
| 384 | + BuiltinClosures.c
|
|
| 384 | 385 | Capability.c
|
| 385 | 386 | CheckUnload.c
|
| 386 | 387 | CheckVectorSupport.c
|
| 1 | +{-# LANGUAGE GHC2024, BlockArguments, MagicHash #-}
|
|
| 2 | + |
|
| 3 | +module T26216 (main) where
|
|
| 4 | + |
|
| 5 | +import Data.Kind (Type, Constraint)
|
|
| 6 | +import GHC.TypeNats
|
|
| 7 | +import GHC.Exts (proxy#)
|
|
| 8 | + |
|
| 9 | +import T26216_aux
|
|
| 10 | + |
|
| 11 | +getN :: forall (n :: Nat). SNat n -> Natural
|
|
| 12 | +getN s = withKnownNat s (natVal s)
|
|
| 13 | + |
|
| 14 | +type C :: forall {k}. (k -> Constraint) -> k -> Type
|
|
| 15 | +data C c a where { C :: c a => C c a }
|
|
| 16 | + |
|
| 17 | +know :: forall (n :: Nat). SNat n -> C KnownNat n
|
|
| 18 | +know s = withKnownNat s C
|
|
| 19 | + |
|
| 20 | +getC :: forall (n :: Nat). C KnownNat n -> Natural
|
|
| 21 | +getC C = natVal' (proxy# @n)
|
|
| 22 | + |
|
| 23 | +main :: IO ()
|
|
| 24 | +main = do
|
|
| 25 | + let !s = mkSome $ natSing @42
|
|
| 26 | + !c = withSome s $ mkSome . know
|
|
| 27 | + print $ withSome s getN
|
|
| 28 | + print $ withSome c getC |
| 1 | +:l T26216
|
|
| 2 | +main |
| 1 | +42
|
|
| 2 | +42 |
| 1 | +{-# LANGUAGE GHC2024 #-}
|
|
| 2 | +{-# LANGUAGE PatternSynonyms #-}
|
|
| 3 | +{-# LANGUAGE PolyKinds #-}
|
|
| 4 | + |
|
| 5 | +module T26216_aux (Some, data Some, mkSome, withSome) where
|
|
| 6 | +import Data.Kind (Type)
|
|
| 7 | +import GHC.Exts (Any)
|
|
| 8 | +import Unsafe.Coerce (unsafeCoerce)
|
|
| 9 | + |
|
| 10 | +type Some :: (k -> Type) -> Type
|
|
| 11 | +newtype Some tag = UnsafeSome (tag Any)
|
|
| 12 | +type role Some representational
|
|
| 13 | + |
|
| 14 | +{-# COMPLETE Some #-}
|
|
| 15 | +pattern Some :: tag a -> Some tag
|
|
| 16 | +pattern Some x <- UnsafeSome x
|
|
| 17 | + where Some x = UnsafeSome ((unsafeCoerce :: tag a -> tag Any) x)
|
|
| 18 | + |
|
| 19 | +-- | Constructor.
|
|
| 20 | +mkSome :: tag a -> Some tag
|
|
| 21 | +mkSome = \x -> UnsafeSome (unsafeCoerce x)
|
|
| 22 | + |
|
| 23 | +-- | Eliminator.
|
|
| 24 | +withSome :: Some tag -> (forall a. tag a -> b) -> b
|
|
| 25 | +withSome (UnsafeSome thing) some = some (unsafeCoerce thing) |
| ... | ... | @@ -5,3 +5,7 @@ test('T23068', ghci_dump_bcos + [filter_stdout_lines(r'.*bitmap: .*')], ghci_scr |
| 5 | 5 | test('T25975', extra_ways(ghci_ways), compile_and_run,
|
| 6 | 6 | # Some of the examples work more robustly with these flags
|
| 7 | 7 | ['-fno-break-points -fno-full-laziness'])
|
| 8 | + |
|
| 9 | +# Nullary data constructors
|
|
| 10 | +test('T26216', extra_files(["T26216_aux.hs"]), ghci_script, ['T26216.script'])
|
|
| 11 | + |
| 1 | 1 | test('T23146', expect_broken_for(23060, ghci_ways), compile_and_run, [''])
|
| 2 | 2 | test('T23146_lifted', normal, compile_and_run, [''])
|
| 3 | -test('T23146_liftedeq', expect_broken_for(23060, ghci_ways), compile_and_run, [''])
|
|
| 3 | +test('T23146_liftedeq', normal, compile_and_run, [''])
|
|
| 4 | 4 | test('T23146_lifted_unlifted', normal, compile_and_run, ['']) |
| 1 | +{-# LANGUAGE MultilineStrings #-}
|
|
| 2 | + |
|
| 3 | +main :: IO ()
|
|
| 4 | +main = do
|
|
| 5 | + -- The below strings contain the characters ['\\', '\t', '\\']
|
|
| 6 | + print "\ \"
|
|
| 7 | + print """\ \""" |
| 1 | +""
|
|
| 2 | +"" |
| ... | ... | @@ -27,6 +27,7 @@ test('RecordDotSyntax4', [extra_files(['RecordDotSyntaxA.hs'])], multimod_compil |
| 27 | 27 | test('RecordDotSyntax5', normal, compile_and_run, [''])
|
| 28 | 28 | test('ListTuplePunsConstraints', extra_files(['ListTuplePunsConstraints.hs']), ghci_script, ['ListTuplePunsConstraints.script'])
|
| 29 | 29 | test('T25937', normal, compile_and_run, [''])
|
| 30 | +test('T26415', normal, compile_and_run, [''])
|
|
| 30 | 31 | |
| 31 | 32 | # Multiline strings
|
| 32 | 33 | test('MultilineStrings', normal, compile_and_run, [''])
|
| 1 | +{-# LANGUAGE LambdaCase #-}
|
|
| 2 | + |
|
| 3 | +module T25960 where
|
|
| 4 | + |
|
| 5 | +import Data.Void (Void)
|
|
| 6 | + |
|
| 7 | +f :: (forall a. Void -> a) -> (forall a. Void -> a)
|
|
| 8 | +f g = g
|
|
| 9 | + |
|
| 10 | +absurd :: Void -> a
|
|
| 11 | +absurd = f (\case)
|
|
| 12 | + |
| ... | ... | @@ -935,4 +935,4 @@ test('T24845a', normal, compile, ['']) |
| 935 | 935 | test('T23501a', normal, compile, [''])
|
| 936 | 936 | test('T23501b', normal, compile, [''])
|
| 937 | 937 | test('T25597', normal, compile, [''])
|
| 938 | -test('T26256a', normal, compile, ['']) |
|
| 938 | +test('T25960', normal, compile, ['']) |
| 1 | +{-# LANGUAGE RequiredTypeArguments, EmptyCase, LambdaCase #-}
|
|
| 2 | +{-# OPTIONS -Wincomplete-patterns #-}
|
|
| 3 | + |
|
| 4 | +module T25004k where
|
|
| 5 | + |
|
| 6 | +import Data.Kind
|
|
| 7 | + |
|
| 8 | +f :: ((forall k. forall (xs :: k) -> ()) -> r) -> r
|
|
| 9 | +f cont = cont (\case {}) |
| 1 | +T25004k.hs:9:16: error: [GHC-48010]
|
|
| 2 | + • Empty list of alternatives in \case expression
|
|
| 3 | + checked against a forall-type: forall (xs :: k) -> ...
|
|
| 4 | + • In the first argument of ‘cont’, namely ‘(\case)’
|
|
| 5 | + In the expression: cont (\case)
|
|
| 6 | + In an equation for ‘f’: f cont = cont (\case)
|
|
| 7 | + |
| ... | ... | @@ -733,3 +733,4 @@ test('T24868', normal, compile_fail, ['']) |
| 733 | 733 | test('T24938', normal, compile_fail, [''])
|
| 734 | 734 | test('T25325', normal, compile_fail, [''])
|
| 735 | 735 | test('T25004', normal, compile_fail, [''])
|
| 736 | +test('T25004k', normal, compile_fail, ['']) |