Files
clang-p2996/bolt/test/X86/Inputs/double_jump.cpp
Vladislav Khmelevsky 19fb5a210d [BOLT] Add aarch64 support for peephole passes
Enable peephole optimizations for aarch64.
Also small code refactoring - add PeepholeOpts under Peepholes class.

Vladislav Khmelevsky,
Advanced Software Technology Lab, Huawei

Differential Revision: https://reviews.llvm.org/D118732
2022-02-08 03:04:40 +03:00

36 lines
764 B
C++

// A contrived example to test the double jump removal peephole.
extern "C" unsigned long bar(unsigned long count) {
return count + 1;
}
unsigned long foo(unsigned long count) {
asm(
" cmpq $1,%0\n"
" je .L7\n"
" incq %0\n"
" jmp .L1\n"
".L1: jmp .L2\n"
".L2: incq %0\n"
" cmpq $2,%0\n"
" jne .L3\n"
" jmp .L4\n"
".L3: jmp .L5\n"
".L5: incq %0\n"
".L4: movq %0,%%rdi\n"
" pop %%rbp\n"
" jmp .L6\n"
".L7: pop %%rbp\n"
" incq %0\n"
" jmp .L6\n"
".L6: jmp bar\n"
:
: "m"(count)
);
return count;
}
int main(int argc, const char* argv[]) {
return foo(38);
}