@effekt-lang/effekt 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -144,14 +144,14 @@ define ccc %Neg @unbox(%Pos %input) {
144
144
 
145
145
  define private %Prompt @currentPrompt(%Stack %stack) {
146
146
  %prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
147
- %prompt = load %Prompt, ptr %prompt_pointer
147
+ %prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
148
148
  ret %Prompt %prompt
149
149
  }
150
150
 
151
151
  define private %Prompt @freshPrompt() {
152
152
  %promptSize = ptrtoint ptr getelementptr (%PromptValue, ptr null, i64 1) to i64
153
153
  %prompt = call %Prompt @malloc(i64 %promptSize)
154
- store %PromptValue zeroinitializer, %Prompt %prompt, !alias.scope !4
154
+ store %PromptValue zeroinitializer, %Prompt %prompt, !alias.scope !13, !noalias !23
155
155
  ret %Prompt %prompt
156
156
  }
157
157
 
@@ -163,8 +163,8 @@ define private %Object @newObject(%Eraser %eraser, i64 %environmentSize) alwaysi
163
163
  %object = call ptr @malloc(i64 %size)
164
164
  %objectReferenceCount = getelementptr %Header, ptr %object, i64 0, i32 0
165
165
  %objectEraser = getelementptr %Header, ptr %object, i64 0, i32 1
166
- store %ReferenceCount 0, ptr %objectReferenceCount
167
- store %Eraser %eraser, ptr %objectEraser
166
+ store %ReferenceCount 0, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
167
+ store %Eraser %eraser, ptr %objectEraser, !alias.scope !14, !noalias !24
168
168
  ret %Object %object
169
169
  }
170
170
 
@@ -180,9 +180,9 @@ define private void @shareObject(%Object %object) alwaysinline {
180
180
 
181
181
  next:
182
182
  %objectReferenceCount = getelementptr %Header, ptr %object, i64 0, i32 0
183
- %referenceCount = load %ReferenceCount, ptr %objectReferenceCount
183
+ %referenceCount = load %ReferenceCount, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
184
184
  %referenceCount.1 = add %ReferenceCount %referenceCount, 1
185
- store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount
185
+ store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
186
186
  br label %done
187
187
 
188
188
  done:
@@ -207,17 +207,17 @@ define private void @eraseObject(%Object %object) alwaysinline {
207
207
 
208
208
  next:
209
209
  %objectReferenceCount = getelementptr %Header, ptr %object, i64 0, i32 0
210
- %referenceCount = load %ReferenceCount, ptr %objectReferenceCount
210
+ %referenceCount = load %ReferenceCount, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
211
211
  switch %ReferenceCount %referenceCount, label %decr [%ReferenceCount 0, label %free]
212
212
 
213
213
  decr:
214
214
  %referenceCount.1 = sub %ReferenceCount %referenceCount, 1
215
- store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount
215
+ store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
216
216
  ret void
217
217
 
218
218
  free:
219
219
  %objectEraser = getelementptr %Header, ptr %object, i64 0, i32 1
220
- %eraser = load %Eraser, ptr %objectEraser
220
+ %eraser = load %Eraser, ptr %objectEraser, !alias.scope !14, !noalias !24
221
221
  %environment = call %Environment @objectEnvironment(%Object %object)
222
222
  call void %eraser(%Environment %environment)
223
223
  call void @free(%Object %object)
@@ -244,7 +244,7 @@ define void @eraseNegative(%Neg %val) alwaysinline {
244
244
 
245
245
  define private %Stack @getStack(%Prompt %prompt) {
246
246
  %stack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
247
- %stack = load %Stack, ptr %stack_pointer, !alias.scope !4
247
+ %stack = load %Stack, ptr %stack_pointer, !alias.scope !13, !noalias !23
248
248
  ret %Stack %stack
249
249
  }
250
250
 
@@ -259,7 +259,7 @@ define private ptr @getVarPointer(%Reference %reference, %Stack %stack) {
259
259
 
260
260
  define private %Reference @newReference(%Stack %stack) alwaysinline {
261
261
  %stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
262
- %stackPointer = load %StackPointer, ptr %stackPointer_pointer
262
+ %stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
263
263
 
264
264
  %intStack = ptrtoint %StackPointer %stackPointer to i64
265
265
  %intBase = ptrtoint %Stack %stack to i64
@@ -280,8 +280,8 @@ define private %Stack @checkLimit(%Stack %stack, i64 %n) alwaysinline {
280
280
  %stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
281
281
  %limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
282
282
 
283
- %currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !3
284
- %limit = load %Limit, ptr %limit_pointer, !alias.scope !3
283
+ %currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
284
+ %limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
285
285
  %nextStackPointer = getelementptr i8, %StackPointer %currentStackPointer, i64 %n
286
286
  %isInside = icmp ule %StackPointer %nextStackPointer, %limit
287
287
  br i1 %isInside, label %done, label %realloc
@@ -304,13 +304,13 @@ realloc:
304
304
  %newStackPointer_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 1
305
305
  %newLimit_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 2
306
306
 
307
- store %StackPointer %newStackPointer, ptr %newStackPointer_pointer, !alias.scope !3
308
- store %Limit %newLimit, ptr %newLimit_pointer, !alias.scope !3
307
+ store %StackPointer %newStackPointer, ptr %newStackPointer_pointer, !alias.scope !11, !noalias !21
308
+ store %Limit %newLimit, ptr %newLimit_pointer, !alias.scope !11, !noalias !21
309
309
 
310
310
  %prompt_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 3
311
- %prompt = load %Prompt, ptr %prompt_pointer
311
+ %prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
312
312
  %promptStack = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
313
- store %Stack %newStack, ptr %promptStack, !alias.scope !4
313
+ store %Stack %newStack, ptr %promptStack, !alias.scope !13, !noalias !23
314
314
 
315
315
  ret %Stack %newStack
316
316
  }
@@ -319,26 +319,26 @@ define private %StackPointer @stackAllocate(%Stack %stack, i64 %n) alwaysinline
319
319
  %stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
320
320
  %limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
321
321
 
322
- %currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !3
323
- %limit = load %Limit, ptr %limit_pointer, !alias.scope !3
322
+ %currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
323
+ %limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
324
324
  %nextStackPointer = getelementptr i8, %StackPointer %currentStackPointer, i64 %n
325
325
 
326
- store %StackPointer %nextStackPointer, ptr %stackPointer_pointer, !alias.scope !3
326
+ store %StackPointer %nextStackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
327
327
  ret %StackPointer %currentStackPointer
328
328
  }
329
329
 
330
330
  define private %StackPointer @stackDeallocate(%Stack %stack, i64 %n) {
331
331
  %stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
332
- %stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !3
332
+ %stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
333
333
 
334
334
  %limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
335
- %limit = load %Limit, ptr %limit_pointer, !alias.scope !3
335
+ %limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
336
336
  %isInside = icmp ule %StackPointer %stackPointer, %limit
337
337
  call void @llvm.assume(i1 %isInside)
338
338
 
339
339
  %o = sub i64 0, %n
340
340
  %newStackPointer = getelementptr i8, %StackPointer %stackPointer, i64 %o
341
- store %StackPointer %newStackPointer, ptr %stackPointer_pointer, !alias.scope !3
341
+ store %StackPointer %newStackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
342
342
 
343
343
  ret %StackPointer %newStackPointer
344
344
  }
@@ -352,11 +352,11 @@ define private i64 @nextPowerOfTwo(i64 %x) {
352
352
 
353
353
  define private void @assumeFrameHeaderWasPopped(%Stack %stack) alwaysinline {
354
354
  %stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
355
- %stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !3
355
+ %stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
356
356
  %oldStackPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 1
357
357
 
358
358
  %limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
359
- %limit = load %Limit, ptr %limit_pointer, !alias.scope !3
359
+ %limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
360
360
  %isInside = icmp ule %StackPointer %oldStackPointer, %limit
361
361
  call void @llvm.assume(i1 %isInside)
362
362
  ret void
@@ -378,19 +378,19 @@ define private %Stack @reset(%Stack %oldStack) {
378
378
  %stack.2 = insertvalue %StackValue %stack.1, %Prompt %prompt, 3
379
379
  %stack.3 = insertvalue %StackValue %stack.2, %Stack %oldStack, 4
380
380
 
381
- store %StackValue %stack.3, %Stack %stack
381
+ store %StackValue %stack.3, %Stack %stack, !alias.scope !11, !noalias !21
382
382
 
383
383
  %promptStack = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
384
- store %Stack %stack, ptr %promptStack, !alias.scope !4
384
+ store %Stack %stack, ptr %promptStack, !alias.scope !13, !noalias !23
385
385
 
386
386
  ret %Stack %stack
387
387
  }
388
388
 
389
389
  define private void @revalidate(%Stack %stack) {
390
390
  %prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
391
- %prompt = load %Prompt, ptr %prompt_pointer
391
+ %prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
392
392
  %stack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
393
- %promptStack = load %Stack, ptr %stack_pointer, !alias.scope !4
393
+ %promptStack = load %Stack, ptr %stack_pointer, !alias.scope !13, !noalias !23
394
394
  %isThis = icmp eq %Stack %promptStack, %stack
395
395
  br i1 %isThis, label %done, label %continue
396
396
 
@@ -406,10 +406,10 @@ displace:
406
406
  br label %update
407
407
 
408
408
  update:
409
- store %Stack %stack, ptr %stack_pointer, !alias.scope !4
409
+ store %Stack %stack, ptr %stack_pointer, !alias.scope !13, !noalias !23
410
410
 
411
411
  %next_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
412
- %next = load %Stack, ptr %next_pointer
412
+ %next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
413
413
  tail call void @revalidate(%Stack %next)
414
414
  ret void
415
415
  }
@@ -418,11 +418,11 @@ update:
418
418
  define private void @invalidate(%Stack %stack, %Stack %end) {
419
419
  %prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
420
420
  %next_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
421
- %prompt = load %Prompt, ptr %prompt_pointer
421
+ %prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
422
422
  %stack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
423
- store %Stack null, ptr %stack_pointer, !alias.scope !4
423
+ store %Stack null, ptr %stack_pointer, !alias.scope !13, !noalias !23
424
424
 
425
- %next = load %Stack, ptr %next_pointer
425
+ %next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
426
426
 
427
427
  %isNull = icmp eq %Stack %next, null
428
428
  br i1 %isNull, label %error, label %check
@@ -446,21 +446,21 @@ continue:
446
446
  define private %Stack @resume(%Resumption %resumption, %Stack %oldStack) {
447
447
  %uniqueResumption = call %Resumption @uniqueStack(%Resumption %resumption)
448
448
  %rest_pointer = getelementptr %StackValue, %Resumption %uniqueResumption, i64 0, i32 4
449
- %start = load %Stack, ptr %rest_pointer
449
+ %start = load %Stack, ptr %rest_pointer, !alias.scope !11, !noalias !21
450
450
  call void @revalidate(%Stack %start)
451
451
 
452
- store %Stack %oldStack, ptr %rest_pointer
452
+ store %Stack %oldStack, ptr %rest_pointer, !alias.scope !11, !noalias !21
453
453
 
454
454
  ret %Stack %start
455
455
  }
456
456
 
457
457
  define private {%Resumption, %Stack} @shift(%Stack %stack, %Prompt %prompt) {
458
458
  %resumpion_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
459
- %resumption = load %Stack, ptr %resumpion_pointer, !alias.scope !4
459
+ %resumption = load %Stack, ptr %resumpion_pointer, !alias.scope !13, !noalias !23
460
460
  %next_pointer = getelementptr %StackValue, %Stack %resumption, i64 0, i32 4
461
- %next = load %Stack, ptr %next_pointer
461
+ %next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
462
462
 
463
- store %Stack %stack, ptr %next_pointer
463
+ store %Stack %stack, ptr %next_pointer, !alias.scope !11, !noalias !21
464
464
 
465
465
  %result.0 = insertvalue {%Resumption, %Stack} undef, %Resumption %resumption, 0
466
466
  %result = insertvalue {%Resumption, %Stack} %result.0, %Stack %next, 1
@@ -469,12 +469,12 @@ define private {%Resumption, %Stack} @shift(%Stack %stack, %Prompt %prompt) {
469
469
 
470
470
  define private void @erasePrompt(%Prompt %prompt) alwaysinline {
471
471
  %referenceCount_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 0
472
- %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !4
472
+ %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
473
473
  switch %ReferenceCount %referenceCount, label %decrement [%ReferenceCount 0, label %free]
474
474
 
475
475
  decrement:
476
476
  %newReferenceCount = sub %ReferenceCount %referenceCount, 1
477
- store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !4
477
+ store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
478
478
  ret void
479
479
 
480
480
  free:
@@ -484,9 +484,9 @@ free:
484
484
 
485
485
  define private void @sharePrompt(%Prompt %prompt) alwaysinline {
486
486
  %referenceCount_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 0
487
- %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !4
487
+ %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
488
488
  %newReferenceCount = add %ReferenceCount %referenceCount, 1
489
- store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !4
489
+ store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
490
490
  ret void
491
491
  }
492
492
 
@@ -494,11 +494,11 @@ define private %Stack @underflowStack(%Stack %stack) {
494
494
  %stackPrompt = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
495
495
  %stackRest = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
496
496
 
497
- %prompt = load %Prompt, ptr %stackPrompt
498
- %rest = load %Stack, ptr %stackRest
497
+ %prompt = load %Prompt, ptr %stackPrompt, !alias.scope !11, !noalias !21
498
+ %rest = load %Stack, ptr %stackRest, !alias.scope !11, !noalias !21
499
499
 
500
500
  %promptStack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
501
- store %Stack null, ptr %promptStack_pointer, !alias.scope !4
501
+ store %Stack null, ptr %promptStack_pointer, !alias.scope !13, !noalias !23
502
502
 
503
503
  call void @erasePrompt(%Prompt %prompt)
504
504
  call void @free(%Stack %stack)
@@ -514,8 +514,8 @@ define private %Stack @copyStack(%Stack %stack) alwaysinline {
514
514
  %stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
515
515
  %limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
516
516
 
517
- %stackPointer = load %StackPointer, ptr %stackPointer_pointer
518
- %limit = load %Limit, ptr %limit_pointer
517
+ %stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
518
+ %limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
519
519
 
520
520
  %intStackPointer = ptrtoint %StackPointer %stackPointer to i64
521
521
  %intBase = ptrtoint %Stack %stack to i64
@@ -532,17 +532,17 @@ define private %Stack @copyStack(%Stack %stack) alwaysinline {
532
532
  %newStackPointer_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 1
533
533
  %newLimit_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 2
534
534
 
535
- store %StackPointer %newStackPointer, ptr %newStackPointer_pointer
536
- store %Limit %newLimit, ptr %newLimit_pointer
535
+ store %StackPointer %newStackPointer, ptr %newStackPointer_pointer, !alias.scope !11, !noalias !21
536
+ store %Limit %newLimit, ptr %newLimit_pointer, !alias.scope !11, !noalias !21
537
537
 
538
538
  call void @shareFrames(%StackPointer %newStackPointer)
539
539
 
540
540
  %prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
541
- %prompt = load %Prompt, ptr %prompt_pointer
541
+ %prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
542
542
  call void @sharePrompt(%Prompt %prompt)
543
543
 
544
544
  %referenceCount_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 0
545
- store i64 0, ptr %referenceCount_pointer
545
+ store i64 0, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
546
546
 
547
547
  ret %Stack %newStack
548
548
  }
@@ -552,7 +552,7 @@ define private %Resumption @uniqueStack(%Resumption %resumption) alwaysinline {
552
552
 
553
553
  entry:
554
554
  %referenceCount_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 0
555
- %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer
555
+ %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
556
556
  switch %ReferenceCount %referenceCount, label %copy [%ReferenceCount 0, label %done]
557
557
 
558
558
  done:
@@ -560,12 +560,12 @@ done:
560
560
 
561
561
  copy:
562
562
  %newOldReferenceCount = sub %ReferenceCount %referenceCount, 1
563
- store %ReferenceCount %newOldReferenceCount, ptr %referenceCount_pointer
563
+ store %ReferenceCount %newOldReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
564
564
 
565
565
  %firstCopy = call %Stack @copyStack(%Stack %resumption)
566
566
 
567
567
  %stack_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 4
568
- %stack = load %Stack, ptr %stack_pointer
568
+ %stack = load %Stack, ptr %stack_pointer, !alias.scope !11, !noalias !21
569
569
 
570
570
  br label %check
571
571
 
@@ -582,40 +582,40 @@ loop:
582
582
 
583
583
  %newCopy = call %Stack @copyStack(%Stack %current)
584
584
 
585
- store %Stack %newCopy, ptr %rest_pointer
585
+ store %Stack %newCopy, ptr %rest_pointer, !alias.scope !11, !noalias !21
586
586
 
587
587
  %next_pointer = getelementptr %StackValue, %Stack %current, i64 0, i32 4
588
- %next = load %Stack, ptr %next_pointer
588
+ %next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
589
589
 
590
590
  br label %check
591
591
 
592
592
  stop:
593
- store %Stack %firstCopy, ptr %rest_pointer
593
+ store %Stack %firstCopy, ptr %rest_pointer, !alias.scope !11, !noalias !21
594
594
  ret %Stack %firstCopy
595
595
  }
596
596
 
597
597
  define void @shareResumption(%Resumption %resumption) alwaysinline {
598
598
  %referenceCount_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 0
599
- %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer
599
+ %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
600
600
  %referenceCount.1 = add %ReferenceCount %referenceCount, 1
601
- store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer
601
+ store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
602
602
  ret void
603
603
  }
604
604
 
605
605
  define void @eraseResumption(%Resumption %resumption) alwaysinline {
606
606
  %referenceCount_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 0
607
- %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer
607
+ %referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
608
608
  switch %ReferenceCount %referenceCount, label %decr [%ReferenceCount 0, label %free]
609
609
 
610
610
  decr:
611
611
  %referenceCount.1 = sub %ReferenceCount %referenceCount, 1
612
- store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer
612
+ store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
613
613
  ret void
614
614
 
615
615
  free:
616
616
  %stack_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 4
617
- %stack = load %Stack, ptr %stack_pointer
618
- store %Stack null, ptr %stack_pointer
617
+ %stack = load %Stack, ptr %stack_pointer, !alias.scope !11, !noalias !21
618
+ store %Stack null, ptr %stack_pointer, !alias.scope !11, !noalias !21
619
619
  call void @eraseStack(%Stack %stack)
620
620
  ret void
621
621
  }
@@ -625,17 +625,17 @@ define void @eraseStack(%Stack %stack) alwaysinline {
625
625
  %prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
626
626
  %rest_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
627
627
 
628
- %stackPointer = load %StackPointer, ptr %stackPointer_pointer
629
- %prompt = load %Stack, ptr %prompt_pointer
630
- %rest = load %Stack, ptr %rest_pointer
628
+ %stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
629
+ %prompt = load %Stack, ptr %prompt_pointer, !alias.scope !11, !noalias !21
630
+ %rest = load %Stack, ptr %rest_pointer, !alias.scope !11, !noalias !21
631
631
 
632
632
  %promptStack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
633
- %promptStack = load %Stack, ptr %promptStack_pointer, !alias.scope !4
633
+ %promptStack = load %Stack, ptr %promptStack_pointer, !alias.scope !13, !noalias !23
634
634
  %isThisStack = icmp eq %Stack %promptStack, %stack
635
635
  br i1 %isThisStack, label %clearPrompt, label %free
636
636
 
637
637
  clearPrompt:
638
- store %Stack null, ptr %promptStack_pointer, !alias.scope !4
638
+ store %Stack null, ptr %promptStack_pointer, !alias.scope !13, !noalias !23
639
639
  br label %free
640
640
 
641
641
  free:
@@ -656,7 +656,7 @@ done:
656
656
  define private void @shareFrames(%StackPointer %stackPointer) alwaysinline {
657
657
  %newStackPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 -1
658
658
  %stackSharer = getelementptr %FrameHeader, %StackPointer %newStackPointer, i64 0, i32 1
659
- %sharer = load %Sharer, ptr %stackSharer
659
+ %sharer = load %Sharer, ptr %stackSharer, !alias.scope !12, !noalias !22
660
660
  tail call void %sharer(%StackPointer %newStackPointer)
661
661
  ret void
662
662
  }
@@ -664,7 +664,7 @@ define private void @shareFrames(%StackPointer %stackPointer) alwaysinline {
664
664
  define private void @eraseFrames(%StackPointer %stackPointer) alwaysinline {
665
665
  %newStackPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 -1
666
666
  %stackEraser = getelementptr %FrameHeader, %StackPointer %newStackPointer, i64 0, i32 2
667
- %eraser = load %Eraser, ptr %stackEraser
667
+ %eraser = load %Eraser, ptr %stackEraser, !alias.scope !12, !noalias !22
668
668
  tail call void %eraser(%StackPointer %newStackPointer)
669
669
  ret void
670
670
  }
@@ -705,37 +705,37 @@ define private %Stack @withEmptyStack() {
705
705
  %globals = call %Stack @reset(%Stack null)
706
706
 
707
707
  %globalsStackPointer_pointer = getelementptr %StackValue, %Stack %globals, i64 0, i32 1
708
- %globalsStackPointer = load %StackPointer, ptr %globalsStackPointer_pointer
708
+ %globalsStackPointer = load %StackPointer, ptr %globalsStackPointer_pointer, !alias.scope !11, !noalias !21
709
709
 
710
710
  %returnAddressPointer.0 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 0, i32 0
711
711
  %sharerPointer.0 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 0, i32 1
712
712
  %eraserPointer.0 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 0, i32 2
713
713
 
714
- store ptr @globalsReturn, ptr %returnAddressPointer.0
715
- store ptr @topLevelSharer, ptr %sharerPointer.0
716
- store ptr @topLevelEraser, ptr %eraserPointer.0
714
+ store ptr @globalsReturn, ptr %returnAddressPointer.0, !alias.scope !12, !noalias !22
715
+ store ptr @topLevelSharer, ptr %sharerPointer.0, !alias.scope !12, !noalias !22
716
+ store ptr @topLevelEraser, ptr %eraserPointer.0, !alias.scope !12, !noalias !22
717
717
 
718
718
  %globalsStackPointer_2 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 1
719
- store %StackPointer %globalsStackPointer_2, ptr %globalsStackPointer_pointer
719
+ store %StackPointer %globalsStackPointer_2, ptr %globalsStackPointer_pointer, !alias.scope !11, !noalias !21
720
720
 
721
721
  %stack = call %Stack @reset(%Stack %globals)
722
722
 
723
723
  %globalStack = getelementptr %PromptValue, %Prompt @global, i64 0, i32 1
724
- store %Stack %stack, ptr %globalStack, !alias.scope !4
724
+ store %Stack %stack, ptr %globalStack, !alias.scope !13, !noalias !23
725
725
 
726
726
  %stackStackPointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
727
- %stackPointer = load %StackPointer, ptr %stackStackPointer
727
+ %stackPointer = load %StackPointer, ptr %stackStackPointer, !alias.scope !11, !noalias !21
728
728
 
729
729
  %returnAddressPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 0
730
730
  %sharerPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 1
731
731
  %eraserPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 2
732
732
 
733
- store %ReturnAddress @topLevel, ptr %returnAddressPointer
734
- store %Sharer @topLevelSharer, ptr %sharerPointer
735
- store %Eraser @topLevelEraser, ptr %eraserPointer
733
+ store %ReturnAddress @topLevel, ptr %returnAddressPointer, !alias.scope !12, !noalias !22
734
+ store %Sharer @topLevelSharer, ptr %sharerPointer, !alias.scope !12, !noalias !22
735
+ store %Eraser @topLevelEraser, ptr %eraserPointer, !alias.scope !12, !noalias !22
736
736
 
737
737
  %stackPointer_2 = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 1
738
- store %StackPointer %stackPointer_2, ptr %stackStackPointer
738
+ store %StackPointer %stackPointer_2, ptr %stackStackPointer, !alias.scope !11, !noalias !21
739
739
 
740
740
  ret %Stack %stack
741
741
  }
@@ -743,7 +743,7 @@ define private %Stack @withEmptyStack() {
743
743
  define void @resume_Int(%Stack %stack, %Int %argument) {
744
744
  %stackPointer = call ccc %StackPointer @stackDeallocate(%Stack %stack, i64 24)
745
745
  %returnAddressPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 0
746
- %returnAddress = load %ReturnAddress, ptr %returnAddressPointer
746
+ %returnAddress = load %ReturnAddress, ptr %returnAddressPointer, !alias.scope !12, !noalias !22
747
747
  tail call tailcc void %returnAddress(%Int %argument, %Stack %stack)
748
748
  ret void
749
749
  }
@@ -751,7 +751,7 @@ define void @resume_Int(%Stack %stack, %Int %argument) {
751
751
  define void @resume_Pos(%Stack %stack, %Pos %argument) {
752
752
  %stackPointer = call ccc %StackPointer @stackDeallocate(%Stack %stack, i64 24)
753
753
  %returnAddressPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 0
754
- %returnAddress = load %ReturnAddress, ptr %returnAddressPointer
754
+ %returnAddress = load %ReturnAddress, ptr %returnAddressPointer, !alias.scope !12, !noalias !22
755
755
  tail call tailcc void %returnAddress(%Pos %argument, %Stack %stack)
756
756
  ret void
757
757
  }
@@ -764,7 +764,7 @@ define void @run(%Neg %f) {
764
764
  %arrayPointer = extractvalue %Neg %f, 0
765
765
  %object = extractvalue %Neg %f, 1
766
766
  %functionPointerPointer = getelementptr ptr, ptr %arrayPointer, i64 0
767
- %functionPointer = load ptr, ptr %functionPointerPointer
767
+ %functionPointer = load ptr, ptr %functionPointerPointer, !alias.scope !15, !noalias !25
768
768
 
769
769
  ; call
770
770
  tail call tailcc %Pos %functionPointer(%Object %object, %Stack %stack)
@@ -779,7 +779,7 @@ define void @run_Int(%Neg %f, i64 %argument) {
779
779
  %arrayPointer = extractvalue %Neg %f, 0
780
780
  %object = extractvalue %Neg %f, 1
781
781
  %functionPointerPointer = getelementptr ptr, ptr %arrayPointer, i64 0
782
- %functionPointer = load ptr, ptr %functionPointerPointer
782
+ %functionPointer = load ptr, ptr %functionPointerPointer, !alias.scope !15, !noalias !25
783
783
 
784
784
  ; call
785
785
  tail call tailcc %Pos %functionPointer(%Object %object, %Evidence 0, i64 %argument, %Stack %stack)
@@ -794,7 +794,7 @@ define void @run_Pos(%Neg %f, %Pos %argument) {
794
794
  %arrayPointer = extractvalue %Neg %f, 0
795
795
  %object = extractvalue %Neg %f, 1
796
796
  %functionPointerPointer = getelementptr ptr, ptr %arrayPointer, i64 0
797
- %functionPointer = load ptr, ptr %functionPointerPointer
797
+ %functionPointer = load ptr, ptr %functionPointerPointer, !alias.scope !15, !noalias !25
798
798
 
799
799
  ; call
800
800
  tail call tailcc %Pos %functionPointer(%Object %object, %Evidence 0, %Pos %argument, %Stack %stack)
@@ -806,10 +806,21 @@ define void @run_Pos(%Neg %f, %Pos %argument) {
806
806
  !0 = !{!"types"}
807
807
 
808
808
  ; Scopes
809
- !1 = !{!"stackValues", !0}
810
- !2 = !{!"prompts", !0}
809
+ !1 = !{!"stackBase", !0}
810
+ !2 = !{!"stackPointer", !0}
811
+ !3 = !{!"prompt", !0}
812
+ !4 = !{!"object", !0}
813
+ !5 = !{!"vtable", !0}
811
814
 
812
815
  ; Scope lists
813
- !3 = !{!1} ; stackValues
814
- !4 = !{!2} ; prompts
815
- !5 = !{!1, !2} ; stackValues & prompts
816
+ !11 = !{!1} ; stackBase
817
+ !12 = !{!2} ; stackPointer
818
+ !13 = !{!3} ; prompt
819
+ !14 = !{!4} ; object
820
+ !15 = !{!5} ; vtable
821
+
822
+ !21 = !{ !2, !3, !4, !5} ; not stackBase
823
+ !22 = !{!1, !3, !4, !5} ; not stackPointer
824
+ !23 = !{!1, !2, !4, !5} ; not prompt
825
+ !24 = !{!1, !2, !3, !5} ; not object
826
+ !25 = !{!1, !2, !3, !4 } ; not vtable
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Eclipse Public License 2.0 (EPL) | The Eclipse Foundation</title><meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.110.0"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=1740338125"><script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-5WLCZXC")</script><script>var tableClasses="table"</script><link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel=stylesheet type=text/css></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WLCZXC" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a class=sr-only href=#content>Skip to main content</a><header class="header-wrapper header-wrapper" id=header><div class=header-toolbar><div class=container><div class=header-toolbar-row><div class="toolbar-btn toolbar-search-btn dropdown"><button class=dropdown-toggle id=toolbar-search type=button data-toggle=dropdown tabindex=0 aria-label=Search>
1
+ <!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Eclipse Public License 2.0 (EPL) | The Eclipse Foundation</title><meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.110.0"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=1742148967"><script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-5WLCZXC")</script><script>var tableClasses="table"</script><link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel=stylesheet type=text/css></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WLCZXC" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a class=sr-only href=#content>Skip to main content</a><header class="header-wrapper header-wrapper" id=header><div class=header-toolbar><div class=container><div class=header-toolbar-row><div class="toolbar-btn toolbar-search-btn dropdown"><button class=dropdown-toggle id=toolbar-search type=button data-toggle=dropdown tabindex=0 aria-label=Search>
2
2
  <i class="fa fa-search fa-lg" aria-role=none></i></button><div class="toolbar-search-bar-wrapper dropdown-menu dropdown-menu-right" aria-labelledby=toolbar-search><form action=https://www.eclipse.org/home/search method=get><div class=search-bar><input class=search-bar-input name=q placeholder=Search>
3
3
  <button>
4
4
  <i class="fa fa-search" type=submit></i></button></div></form></div></div><div class="toolbar-btn toolbar-user-menu-btn dropdown"><button class=dropdown-toggle id=toolbar-user-menu type=button data-toggle=dropdown tabindex=0 aria-label="User Menu">
@@ -59,5 +59,5 @@ open source software collaboration and innovation.</p></div><div class=mega-menu
59
59
  <i class="fa-brands fa-linkedin-in fa-stack-1x fa-inverse" aria-hidden=true></i>
60
60
  <span class=sr-only>Linkedin account</span></span></a></li></ul></div></div><div class="footer-sections row equal-height-md font-bold"><div class=col-md-15><div class=row><section id=footer-eclipse-foundation class="footer-section col-sm-8"><div class=menu-heading>Eclipse Foundation</div><ul class=nav><li><a href=https://www.eclipse.org/org/>About</a></li><li><a href=https://projects.eclipse.org/>Projects</a></li><li><a href=https://www.eclipse.org/collaborations/>Collaborations</a></li><li><a href=https://www.eclipse.org/membership/>Membership</a></li><li><a href=https://www.eclipse.org/sponsor/>Sponsor</a></li></ul></section><section id=footer-legal class="footer-section col-sm-8"><div class=menu-heading>Legal</div><ul class=nav><li><a href=https://www.eclipse.org/legal/privacy/>Privacy Policy</a></li><li><a href=https://www.eclipse.org/legal/terms-of-use/>Terms of Use</a></li><li><a href=https://www.eclipse.org/legal/compliance/>Compliance</a></li><li><a href=https://www.eclipse.org/org/documents/Community_Code_of_Conduct.php>Code of Conduct</a></li><li><a href=https://www.eclipse.org/legal/>Legal Resources</a></li><li><a class=toolbar-manage-cookies href=# onclick=event.preventDefault()>Manage Cookies</a></li></ul></section><section id=footer-more class="footer-section col-sm-8"><div class=menu-heading>More</div><ul class=nav><li><a href=https://www.eclipse.org/security/>Report a Vulnerability</a></li><li><a href=https://status.eclipse.org/>Service Status</a></li><li><a href=https://www.eclipse.org/org/foundation/contact.php>Contact Us</a></li><li><a href=https://www.eclipse.org/projects/support/>Support</a></li></ul></section></div></div><div id=footer-end class="footer-section col-md-8 col-md-offset-1 col-sm-24"><div class=footer-end-newsletter><form id=mc-embedded-subscribe-form action="https://eclipse.us6.list-manage.com/subscribe/post?u=eaf9e1f06f194eadc66788a85&id=e7538485cd&f_id=00f9c2e1f0" method=post novalidate target=_blank><label class=footer-end-newsletter-label for=email>Subscribe to our Newsletter</label><div class=footer-end-newsletter-input-wrapper><input class=footer-end-newsletter-input type=email id=email name=EMAIL autocomplete=email placeholder="Enter your email address">
61
61
  <button class="footer-end-newsletter-submit btn btn-link" id=mc-embedded-subscribe type=submit name=subscribe>
62
- <i class="fa fa-solid fa-envelope fa-lg" aria-hidden=true></i></button></div></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright &copy; Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1740338125"></script>
62
+ <i class="fa fa-solid fa-envelope fa-lg" aria-hidden=true></i></button></div></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright &copy; Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1742148967"></script>
63
63
  <script>(function(){})(jQuery,document)</script></div></body></html>