void test1() {
  extern volatile int f11G, a, b;
  f11G = a + b;
  f11G = a - b;
  f11G = a * b;
  f11G = -a;
  ++a;
  --a;
  extern int *P;
  ++P;
  extern volatile signed char PR9350;
  ++PR9350;
}


x86 assembly (clang, -O0):
<test1>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ed5(%rip),%rax
mov    (%rax),%ecx
mov    0x2ebc(%rip),%rax
mov    (%rax),%eax
add    %eax,%ecx
mov    0x2ea9(%rip),%rax
mov    %ecx,(%rax)
mov    0x2eb8(%rip),%rax
mov    (%rax),%ecx
mov    0x2e9f(%rip),%rax
mov    (%rax),%eax
sub    %eax,%ecx
mov    0x2e8c(%rip),%rax
mov    %ecx,(%rax)
mov    0x2e9b(%rip),%rax
mov    (%rax),%ecx
mov    0x2e82(%rip),%rax
mov    (%rax),%eax
imul   %eax,%ecx
mov    0x2e6e(%rip),%rax
mov    %ecx,(%rax)
mov    0x2e7d(%rip),%rax
mov    (%rax),%eax
xor    %ecx,%ecx
sub    %eax,%ecx
mov    0x2e58(%rip),%rax
mov    %ecx,(%rax)
mov    0x2e67(%rip),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    0x2e5b(%rip),%rax
mov    %ecx,(%rax)
mov    0x2e52(%rip),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    0x2e46(%rip),%rax
mov    %ecx,(%rax)
mov    0x2e1d(%rip),%rax
mov    (%rax),%rcx
add    $0x4,%rcx
mov    0x2e0f(%rip),%rax
mov    %rcx,(%rax)
mov    0x2e35(%rip),%rax
mov    (%rax),%cl
add    $0x1,%cl
mov    0x2e29(%rip),%rax
mov    %cl,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<test1>:
mov    0x2ed9(%rip),%rax
mov    (%rax),%ecx
mov    0x2ec0(%rip),%rdx
add    (%rdx),%ecx
mov    0x2eaf(%rip),%rsi
mov    %ecx,(%rsi)
mov    (%rax),%ecx
sub    (%rdx),%ecx
mov    %ecx,(%rsi)
mov    (%rax),%ecx
imul   (%rdx),%ecx
mov    %ecx,(%rsi)
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    %ecx,(%rsi)
addl   $0x1,(%rax)
addl   $0xffffffff,(%rax)
mov    0x2e85(%rip),%rax
addq   $0x4,(%rax)
mov    0x2eaa(%rip),%rax
addb   $0x1,(%rax)
ret

LLVM IR (-O0):
@a = external global i32
@b = external global i32
@f11G = external global i32
@P = external global i32*
@PR9350 = external global i8
define void @test1() {
%1 = load volatile i32, i32* @a
%2 = load volatile i32, i32* @b
%3 = add nsw i32 %1, %2
store volatile i32 %3, i32* @f11G
%4 = load volatile i32, i32* @a
%5 = load volatile i32, i32* @b
%6 = sub nsw i32 %4, %5
store volatile i32 %6, i32* @f11G
%7 = load volatile i32, i32* @a
%8 = load volatile i32, i32* @b
%9 = mul nsw i32 %7, %8
store volatile i32 %9, i32* @f11G
%10 = load volatile i32, i32* @a
%11 = sub nsw i32 0, %10
store volatile i32 %11, i32* @f11G
%12 = load volatile i32, i32* @a
%13 = add nsw i32 %12, 1
store volatile i32 %13, i32* @a
%14 = load volatile i32, i32* @a
%15 = add nsw i32 %14, -1
store volatile i32 %15, i32* @a
%16 = load i32*, i32** @P
%17 = getelementptr inbounds i32, i32* %16, i32 1
store i32* %17, i32** @P
%18 = load volatile i8, i8* @PR9350
%19 = add i8 %18, 1
store volatile i8 %19, i8* @PR9350
ret void
}

LLVM IR (-O2):
@a = external global i32
@b = external global i32
@f11G = external global i32
@P = external global i32*
@PR9350 = external global i8
define void @test1() {
%1 = load volatile i32, i32* @a
%2 = load volatile i32, i32* @b
%3 = add nsw i32 %2, %1
store volatile i32 %3, i32* @f11G
%4 = load volatile i32, i32* @a
%5 = load volatile i32, i32* @b
%6 = sub nsw i32 %4, %5
store volatile i32 %6, i32* @f11G
%7 = load volatile i32, i32* @a
%8 = load volatile i32, i32* @b
%9 = mul nsw i32 %8, %7
store volatile i32 %9, i32* @f11G
%10 = load volatile i32, i32* @a
%11 = sub nsw i32 0, %10
store volatile i32 %11, i32* @f11G
%12 = load volatile i32, i32* @a
%13 = add nsw i32 %12, 1
store volatile i32 %13, i32* @a
%14 = load volatile i32, i32* @a
%15 = add nsw i32 %14, -1
store volatile i32 %15, i32* @a
%16 = load i32*, i32** @P
%17 = getelementptr inbounds i32, i32* %16, i64 1
store i32* %17, i32** @P
%18 = load volatile i8, i8* @PR9350
%19 = add i8 %18, 1
store volatile i8 %19, i8* @PR9350
ret void
}