Дано:
int main ()
{
    int i = 10;
    int *q = new int [i];
    return 0;
}
компилятор Sun Sudio 12. Платформа x86_64. Команда CC -xport64=full, ворнинг на строку "int *q = new int [i]": Converting an "int" into a 64-bit integer causes sign extension.
main:
.L_y1:
        pushq   %rbp
.L_y2:
        movq    %rsp,%rbp
.L_y3:
        subq    $32,%rsp
.L1:
.L2:
/ File main.cpp:
/ Line 2
/ Line 3
        movl    $10, -8(%rbp)
/ Line 4
        movl    -8(%rbp),%eax
        cltq
        movq    %rax, %r8
        leaq    0(,%r8,4), %rdi
        movl    $0, %eax
        call    __1c2N6FL_pv_
        movq    %rax, %r8
        movq    %r8, -24(%rbp)
        movq    -24(%rbp), %r8
        movq    %r8, -16(%rbp)
/ Line 6
        movl    $0, -4(%rbp)
        jmp     .L3
        .align  4
/ Line 7
.L3:
        movl    -4(%rbp), %eax
        leave
        ret
Вопрос: компилятор прав? Почему gcc молчит? Как этот сановский компилятор получше заткнуть?


    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.