• TheElectroness
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    2 years ago

    I assumed, at first, that it was somehow falling through the infinite loop and accidentally runnning the unreachable function, but it clearly explicitly runs it in the assembler generated…

    10f4: 48 8d 3d d5 00 00 00  lea    0xd5(%rip),%rdi        # 11d0 <_Z11unreachablev>
    10fb: ff 15 b7 2e 00 00     call   *0x2eb7(%rip)        # 3fb8 <__libc_start_main@GLIBC_2.34>
    

    how odd.

    edit: ah, it’s called from __start, which suggests that main is being elided entirely by the optimiser, and somehow ‘unreachable’ is simply becoming a defacto ‘main’

    • ☆ Yσɠƚԋσʂ ☆OP
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      2 years ago

      compiler optimizer skipping unreachable code, but I can’t seem to get it to work locally now that I tried it

    • Prologue7642@lemmygrad.ml
      link
      fedilink
      arrow-up
      4
      ·
      2 years ago

      You need to use exactly the same command: clang++ loop.cpp -O1 -Wall -o loop this page likely doesn’t use clang but GCC, so it won’t work.

    • ☆ Yσɠƚԋσʂ ☆OP
      link
      fedilink
      arrow-up
      3
      arrow-down
      2
      ·
      2 years ago

      ok yeah didn’t work on my machine either

      edit: interestingly enough seems to work on some architectures and not others, a friend of mine tried it and it worked for him. I guess that’s why it’s an undefined behvaior. :)