Hi,

Is it normal to have such behavior?

$ cat loop.c
int
main(void)
{
        for (;;)
                ;
}
$ clang -O1 -Wall -Wextra -S -o loop.c.s loop.c
$ clang++ -O1 -Wall -Wextra -S -o loop.cxx.s loop.c
clang++: warning: treating 'c' input as 'c++' when in C++ mode, this behavior 
is deprecated [-Wdeprecated]
$ diff -U8 loop.c.s loop.cxx.s
--- loop.c.s    Thu Mar  2 11:55:02 2023
+++ loop.cxx.s  Thu Mar  2 11:55:08 2023
@@ -5,20 +5,16 @@
        .type   main,@function
 main:                                   # @main
        .cfi_startproc
 # %bb.0:
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset %rbp, -16
        movq    %rsp, %rbp
-       .cfi_def_cfa_register %rbp
-       .p2align        4, 0x90
-.LBB0_1:                                # =>This Inner Loop Header: Depth=1
-       jmp     .LBB0_1
 .Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                         # -- End function
        .section        
.text.__llvm_retpoline_r11,"axG",@progbits,__llvm_retpoline_r11,comdat
        .hidden __llvm_retpoline_r11            # -- Begin function 
__llvm_retpoline_r11
        .weak   __llvm_retpoline_r11
        .p2align        4, 0xcc


See that jmp instruction which is removed.
Without that jmp instruction the main function might reach other codes!

Reply via email to