@@ -452,49 +452,101 @@ SECTIONS {
452
452
# TO-DISCARD-WARN: warning: section '.two_byte_section' cannot spill from/to /DISCARD/
453
453
454
454
#--- same-mem-region.lds
455
- ## Spills to the same memory region do not consume address assignment passes.
455
+ ## Spills to the same memory region that overflowed do not consume address assignment passes.
456
456
MEMORY {
457
457
a : ORIGIN = 0, LENGTH = 0
458
458
b : ORIGIN = 0, LENGTH = 3
459
+ c : ORIGIN = 3, LENGTH = 3
460
+ d : ORIGIN = 6, LENGTH = 3
459
461
}
460
462
SECTIONS {
461
463
CLASS(class) { *(.one_byte_section .two_byte_section) }
462
- .a00 : { CLASS(class) } >a
463
- .a01 : { CLASS(class) } >a
464
- .a02 : { CLASS(class) } >a
465
- .a03 : { CLASS(class) } >a
466
- .a04 : { CLASS(class) } >a
467
- .a05 : { CLASS(class) } >a
468
- .a06 : { CLASS(class) } >a
469
- .a07 : { CLASS(class) } >a
470
- .a08 : { CLASS(class) } >a
471
- .a09 : { CLASS(class) } >a
472
- .a10 : { CLASS(class) } >a
473
- .a11 : { CLASS(class) } >a
474
- .a12 : { CLASS(class) } >a
475
- .a13 : { CLASS(class) } >a
476
- .a14 : { CLASS(class) } >a
477
- .a15 : { CLASS(class) } >a
478
- .a16 : { CLASS(class) } >a
479
- .a17 : { CLASS(class) } >a
480
- .a18 : { CLASS(class) } >a
481
- .a19 : { CLASS(class) } >a
482
- .a20 : { CLASS(class) } >a
483
- .a21 : { CLASS(class) } >a
484
- .a22 : { CLASS(class) } >a
485
- .a23 : { CLASS(class) } >a
486
- .a24 : { CLASS(class) } >a
487
- .a25 : { CLASS(class) } >a
488
- .a26 : { CLASS(class) } >a
489
- .a27 : { CLASS(class) } >a
490
- .a28 : { CLASS(class) } >a
491
- .a29 : { CLASS(class) } >a
492
- .a30 : { CLASS(class) } >a
493
- .b : { CLASS(class) } >b
464
+ .a00 : { CLASS(class) } >a AT>c
465
+ .a01 : { CLASS(class) } >a AT>d
466
+ .a02 : { CLASS(class) } >a AT>d
467
+ .a03 : { CLASS(class) } >a AT>d
468
+ .a04 : { CLASS(class) } >a AT>d
469
+ .a05 : { CLASS(class) } >a AT>d
470
+ .a06 : { CLASS(class) } >a AT>d
471
+ .a07 : { CLASS(class) } >a AT>d
472
+ .a08 : { CLASS(class) } >a AT>d
473
+ .a09 : { CLASS(class) } >a AT>d
474
+ .a10 : { CLASS(class) } >a AT>d
475
+ .a11 : { CLASS(class) } >a AT>d
476
+ .a12 : { CLASS(class) } >a AT>d
477
+ .a13 : { CLASS(class) } >a AT>d
478
+ .a14 : { CLASS(class) } >a AT>d
479
+ .a15 : { CLASS(class) } >a AT>d
480
+ .a16 : { CLASS(class) } >a AT>d
481
+ .a17 : { CLASS(class) } >a AT>d
482
+ .a18 : { CLASS(class) } >a AT>d
483
+ .a19 : { CLASS(class) } >a AT>d
484
+ .a20 : { CLASS(class) } >a AT>d
485
+ .a21 : { CLASS(class) } >a AT>d
486
+ .a22 : { CLASS(class) } >a AT>d
487
+ .a23 : { CLASS(class) } >a AT>d
488
+ .a24 : { CLASS(class) } >a AT>d
489
+ .a25 : { CLASS(class) } >a AT>d
490
+ .a26 : { CLASS(class) } >a AT>d
491
+ .a27 : { CLASS(class) } >a AT>d
492
+ .a28 : { CLASS(class) } >a AT>d
493
+ .a29 : { CLASS(class) } >a AT>d
494
+ .a30 : { CLASS(class) } >a AT>d
495
+ .b : { CLASS(class) } >b AT>d
494
496
}
495
497
496
498
# RUN: ld.lld -T same-mem-region.lds -o same-mem-region spill.o
497
499
# RUN: llvm-readelf -S same-mem-region | FileCheck %s --check-prefix=SAME-MEM-REGION
498
500
499
501
# SAME-MEM-REGION: Name Type Address Off Size
500
502
# SAME-MEM-REGION: .b PROGBITS 0000000000000000 001000 000003
503
+
504
+ #--- same-lma-region.lds
505
+ ## Spills to the same load region that overflowed do not consume address assignment passes.
506
+ MEMORY {
507
+ a : ORIGIN = 0, LENGTH = 0
508
+ b : ORIGIN = 0, LENGTH = 3
509
+ c : ORIGIN = 3, LENGTH = 3
510
+ d : ORIGIN = 6, LENGTH = 3
511
+ }
512
+ SECTIONS {
513
+ CLASS(class) { *(.one_byte_section .two_byte_section) }
514
+ .a00 : { CLASS(class) } >c AT>a
515
+ .a01 : { CLASS(class) } >d AT>a
516
+ .a02 : { CLASS(class) } >d AT>a
517
+ .a03 : { CLASS(class) } >d AT>a
518
+ .a04 : { CLASS(class) } >d AT>a
519
+ .a05 : { CLASS(class) } >d AT>a
520
+ .a06 : { CLASS(class) } >d AT>a
521
+ .a07 : { CLASS(class) } >d AT>a
522
+ .a08 : { CLASS(class) } >d AT>a
523
+ .a09 : { CLASS(class) } >d AT>a
524
+ .a10 : { CLASS(class) } >d AT>a
525
+ .a11 : { CLASS(class) } >d AT>a
526
+ .a12 : { CLASS(class) } >d AT>a
527
+ .a13 : { CLASS(class) } >d AT>a
528
+ .a14 : { CLASS(class) } >d AT>a
529
+ .a15 : { CLASS(class) } >d AT>a
530
+ .a16 : { CLASS(class) } >d AT>a
531
+ .a17 : { CLASS(class) } >d AT>a
532
+ .a18 : { CLASS(class) } >d AT>a
533
+ .a19 : { CLASS(class) } >d AT>a
534
+ .a20 : { CLASS(class) } >d AT>a
535
+ .a21 : { CLASS(class) } >d AT>a
536
+ .a22 : { CLASS(class) } >d AT>a
537
+ .a23 : { CLASS(class) } >d AT>a
538
+ .a24 : { CLASS(class) } >d AT>a
539
+ .a25 : { CLASS(class) } >d AT>a
540
+ .a26 : { CLASS(class) } >d AT>a
541
+ .a27 : { CLASS(class) } >d AT>a
542
+ .a28 : { CLASS(class) } >d AT>a
543
+ .a29 : { CLASS(class) } >d AT>a
544
+ .a30 : { CLASS(class) } >d AT>a
545
+ .b : { CLASS(class) } >d AT>b
546
+ }
547
+
548
+ # RUN: ld.lld -T same-lma-region.lds -o same-lma-region spill.o
549
+ # RUN: llvm-readelf -S same-lma-region | FileCheck %s --check-prefix=SAME-LMA-REGION
550
+
551
+ # SAME-LMA-REGION: Name Type Address Off Size
552
+ # SAME-LMA-REGION: .b PROGBITS 0000000000000006 001006 000003
0 commit comments