struct A
{
volatile int a_;
};
int main()
{
A* a = new A;
a->a_ = 10;
volatile int i1 = 0, i2 = 0;
asm("LABEL_1:":::);
i1 = (*a).a_;
asm("LABEL_2:":::);
i2 = a->a_;
asm("LABEL_3:":::);
return 0;
}
/*
$ g++ --std=c++11 -S -O3 deref.cpp
LABEL_1:
# 0 "" 2
#NO_APP
movl (%rax), %edx
movl %edx, 8(%rsp)
#APP
# 13 "deref.cpp" 1
LABEL_2:
# 0 "" 2
#NO_APP
movl (%rax), %eax
movl %eax, 12(%rsp)
#APP
# 15 "deref.cpp" 1
LABEL_3:
*/
c3RydWN0IEEKewogICAgdm9sYXRpbGUgaW50IGFfOwp9OwoKaW50IG1haW4oKQp7CiAgICBBKiBhID0gbmV3IEE7CiAgICBhLT5hXyA9IDEwOwogICAgdm9sYXRpbGUgaW50IGkxID0gMCwgaTIgPSAwOwogICAgYXNtKCJMQUJFTF8xOiI6OjopOwogICAgaTEgPSAoKmEpLmFfOwogICAgYXNtKCJMQUJFTF8yOiI6OjopOwogICAgaTIgPSBhLT5hXzsKICAgIGFzbSgiTEFCRUxfMzoiOjo6KTsKICAgIHJldHVybiAwOwp9CgovKgokIGcrKyAtLXN0ZD1jKysxMSAtUyAtTzMgZGVyZWYuY3BwCgogICAgTEFCRUxfMToKIyAwICIiIDIKI05PX0FQUAoJbW92bAkoJXJheCksICVlZHgKCW1vdmwJJWVkeCwgOCglcnNwKQojQVBQCiMgMTMgImRlcmVmLmNwcCIgMQoJTEFCRUxfMjoKIyAwICIiIDIKI05PX0FQUAoJbW92bAkoJXJheCksICVlYXgKCW1vdmwJJWVheCwgMTIoJXJzcCkKI0FQUAojIDE1ICJkZXJlZi5jcHAiIDEKCUxBQkVMXzM6CgoqLw==