[llvm-dev] __builtin_expect hint ignored

Adam Nowacki via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 18 16:20:19 PDT 2017


https://godbolt.org/g/VvrbFZ

For the code below generated assembly is the worst possible - test 1, else test 3, else test 2 with expected value of 2 last ... Whats going on?

long case_2();
long case_3();
long case_1();
long case_else();
long test(long a) {
    switch (__builtin_expect(a, 2)) {
        case 2: return case_2();
        case 3: return case_3();
        case 1: return case_1();
        case 0: 
        case 4: 
        case 5: return case_else();
        default: __builtin_unreachable();
    }
}


More information about the llvm-dev mailing list