ret void
}
+ define i32 @volatile_inc(i32* %x) {
+ entry:
+ %0 = load volatile i32, i32* %x
+ %1 = add i32 %0, 1
+ store volatile i32 %1, i32* %x
+ ret i32 %1
+ }
+
...
---
name: test
- 'INC32m killed %rdi, 1, _, 0, _, implicit-def dead %eflags :: (store 4 into %ir."a value"), (load 4 from %ir."a value")'
- RETQ
...
+---
+name: volatile_inc
+tracksRegLiveness: true
+liveins:
+ - { reg: '%rdi' }
+body:
+ - id: 0
+ name: entry
+ liveins: [ '%rdi' ]
+ instructions:
+ # CHECK: name: volatile_inc
+ # CHECK: %eax = MOV32rm %rdi, 1, _, 0, _ :: (volatile load 4 from %ir.x)
+ # CHECK: MOV32mr killed %rdi, 1, _, 0, _, %eax :: (volatile store 4 into %ir.x)
+ - '%eax = MOV32rm %rdi, 1, _, 0, _ :: (volatile load 4 from %ir.x)'
+ - '%eax = INC32r killed %eax, implicit-def dead %eflags'
+ - 'MOV32mr killed %rdi, 1, _, 0, _, %eax :: (volatile store 4 into %ir.x)'
+ - 'RETQ %eax'
+...