@@ -151,7 +151,7 @@ define private %Prompt @currentPrompt(%Stack %stack) {
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
154
+ store %PromptValue zeroinitializer , %Prompt %prompt , !alias.scope !4
155
155
ret %Prompt %prompt
156
156
}
157
157
@@ -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
247
+ %stack = load %Stack , ptr %stack_pointer , !alias.scope !4
248
248
ret %Stack %stack
249
249
}
250
250
@@ -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 !2
284
- %limit = load %Limit , ptr %limit_pointer , !alias.scope !2
283
+ %currentStackPointer = load %StackPointer , ptr %stackPointer_pointer , !alias.scope !3
284
+ %limit = load %Limit , ptr %limit_pointer , !alias.scope !3
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 !2
308
- store %Limit %newLimit , ptr %newLimit_pointer , !alias.scope !2
307
+ store %StackPointer %newStackPointer , ptr %newStackPointer_pointer , !alias.scope !3
308
+ store %Limit %newLimit , ptr %newLimit_pointer , !alias.scope !3
309
309
310
310
%prompt_pointer = getelementptr %StackValue , %Stack %newStack , i64 0 , i32 3
311
311
%prompt = load %Prompt , ptr %prompt_pointer
312
312
%promptStack = getelementptr %PromptValue , %Prompt %prompt , i64 0 , i32 1
313
- store %Stack %newStack , ptr %promptStack
313
+ store %Stack %newStack , ptr %promptStack , !alias.scope !4
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 !2
323
- %limit = load %Limit , ptr %limit_pointer , !alias.scope !2
322
+ %currentStackPointer = load %StackPointer , ptr %stackPointer_pointer , !alias.scope !3
323
+ %limit = load %Limit , ptr %limit_pointer , !alias.scope !3
324
324
%nextStackPointer = getelementptr i8 , %StackPointer %currentStackPointer , i64 %n
325
325
326
- store %StackPointer %nextStackPointer , ptr %stackPointer_pointer , !alias.scope !2
326
+ store %StackPointer %nextStackPointer , ptr %stackPointer_pointer , !alias.scope !3
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 !2
332
+ %stackPointer = load %StackPointer , ptr %stackPointer_pointer , !alias.scope !3
333
333
334
334
%limit_pointer = getelementptr %StackValue , %Stack %stack , i64 0 , i32 2
335
- %limit = load %Limit , ptr %limit_pointer , !alias.scope !2
335
+ %limit = load %Limit , ptr %limit_pointer , !alias.scope !3
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 !2
341
+ store %StackPointer %newStackPointer , ptr %stackPointer_pointer , !alias.scope !3
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 !2
355
+ %stackPointer = load %StackPointer , ptr %stackPointer_pointer , !alias.scope !3
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 !2
359
+ %limit = load %Limit , ptr %limit_pointer , !alias.scope !3
360
360
%isInside = icmp ule %StackPointer %oldStackPointer , %limit
361
361
call void @llvm.assume (i1 %isInside )
362
362
ret void
@@ -381,7 +381,7 @@ define private %Stack @reset(%Stack %oldStack) {
381
381
store %StackValue %stack.3 , %Stack %stack
382
382
383
383
%promptStack = getelementptr %PromptValue , %Prompt %prompt , i64 0 , i32 1
384
- store %Stack %stack , ptr %promptStack
384
+ store %Stack %stack , ptr %promptStack , !alias.scope !4
385
385
386
386
ret %Stack %stack
387
387
}
@@ -390,7 +390,7 @@ define private void @revalidate(%Stack %stack) {
390
390
%prompt_pointer = getelementptr %StackValue , %Stack %stack , i64 0 , i32 3
391
391
%prompt = load %Prompt , ptr %prompt_pointer
392
392
%stack_pointer = getelementptr %PromptValue , %Prompt %prompt , i64 0 , i32 1
393
- %promptStack = load %Stack , ptr %stack_pointer
393
+ %promptStack = load %Stack , ptr %stack_pointer , !alias.scope !4
394
394
%isThis = icmp eq %Stack %promptStack , %stack
395
395
br i1 %isThis , label %done , label %continue
396
396
@@ -406,7 +406,7 @@ displace:
406
406
br label %update
407
407
408
408
update:
409
- store %Stack %stack , ptr %stack_pointer
409
+ store %Stack %stack , ptr %stack_pointer , !alias.scope !4
410
410
411
411
%next_pointer = getelementptr %StackValue , %Stack %stack , i64 0 , i32 4
412
412
%next = load %Stack , ptr %next_pointer
@@ -420,7 +420,7 @@ define private void @invalidate(%Stack %stack, %Stack %end) {
420
420
%next_pointer = getelementptr %StackValue , %Stack %stack , i64 0 , i32 4
421
421
%prompt = load %Prompt , ptr %prompt_pointer
422
422
%stack_pointer = getelementptr %PromptValue , %Prompt %prompt , i64 0 , i32 1
423
- store %Stack null , ptr %stack_pointer
423
+ store %Stack null , ptr %stack_pointer , !alias.scope !4
424
424
425
425
%next = load %Stack , ptr %next_pointer
426
426
@@ -456,7 +456,7 @@ define private %Stack @resume(%Resumption %resumption, %Stack %oldStack) {
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
459
+ %resumption = load %Stack , ptr %resumpion_pointer , !alias.scope !4
460
460
%next_pointer = getelementptr %StackValue , %Stack %resumption , i64 0 , i32 4
461
461
%next = load %Stack , ptr %next_pointer
462
462
@@ -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
472
+ %referenceCount = load %ReferenceCount , ptr %referenceCount_pointer , !alias.scope !4
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
477
+ store %ReferenceCount %newReferenceCount , ptr %referenceCount_pointer , !alias.scope !4
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
487
+ %referenceCount = load %ReferenceCount , ptr %referenceCount_pointer , !alias.scope !4
488
488
%newReferenceCount = add %ReferenceCount %referenceCount , 1
489
- store %ReferenceCount %newReferenceCount , ptr %referenceCount_pointer
489
+ store %ReferenceCount %newReferenceCount , ptr %referenceCount_pointer , !alias.scope !4
490
490
ret void
491
491
}
492
492
@@ -498,7 +498,7 @@ define private %Stack @underflowStack(%Stack %stack) {
498
498
%rest = load %Stack , ptr %stackRest
499
499
500
500
%promptStack_pointer = getelementptr %PromptValue , %Prompt %prompt , i64 0 , i32 1
501
- store %Stack null , ptr %promptStack_pointer
501
+ store %Stack null , ptr %promptStack_pointer , !alias.scope !4
502
502
503
503
call void @erasePrompt (%Prompt %prompt )
504
504
call void @free (%Stack %stack )
@@ -630,12 +630,12 @@ define void @eraseStack(%Stack %stack) alwaysinline {
630
630
%rest = load %Stack , ptr %rest_pointer
631
631
632
632
%promptStack_pointer = getelementptr %PromptValue , %Prompt %prompt , i64 0 , i32 1
633
- %promptStack = load %Stack , ptr %promptStack_pointer
633
+ %promptStack = load %Stack , ptr %promptStack_pointer , !alias.scope !4
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
638
+ store %Stack null , ptr %promptStack_pointer , !alias.scope !4
639
639
br label %free
640
640
641
641
free:
@@ -721,7 +721,7 @@ define private %Stack @withEmptyStack() {
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
724
+ store %Stack %stack , ptr %globalStack , !alias.scope !4
725
725
726
726
%stackStackPointer = getelementptr %StackValue , %Stack %stack , i64 0 , i32 1
727
727
%stackPointer = load %StackPointer , ptr %stackStackPointer
@@ -807,6 +807,9 @@ define void @run_Pos(%Neg %f, %Pos %argument) {
807
807
808
808
; Scopes
809
809
!1 = !{!"stackValues" , !0 }
810
+ !2 = !{!"prompts" , !0 }
810
811
811
812
; Scope lists
812
- !2 = !{!1 }
813
+ !3 = !{!1 } ; stackValues
814
+ !4 = !{!2 } ; prompts
815
+ !5 = !{!1 , !2 } ; stackValues & prompts
0 commit comments