Resultados da pesquisa a pedido "compiler-optimization"

2 a resposta

É necessário um sinal ou extensão zero ao adicionar um deslocamento de 32 bits a um ponteiro para a ABI x86-64?

Resumo: Eu estava olhando o código de montagem para orientar minhas otimizações e ver muitas extensões de sinal ou zero ao adicionar int32 a um ponteiro. void Test(int *out, int offset) { out[offset] = 1; } ------------------------------------- ...

2 a resposta

Por que std :: fill (0) é mais lento que std :: fill (1)?

Eu observei em um sistema questd::fill em um grandestd::vector<int> foi significativamente e consistentemente mais lento ao definir um valor constante0 comparado a um valor constante1 ou um valor dinâmico: 5,8 GiB / s vs 7,5 GiB / s No ...

2 a resposta

O código gerado pelo compilador C Minúsculo C emite NOPs e JMPs extras (desnecessários)

Alguém pode explicar por que esse código: #include <stdio.h> int main() { return 0; } quando compilado com tcc usandotcc code.c produz este asm: 00401000 |. 55 PUSH EBP 00401001 |. 89E5 MOV EBP,ESP 00401003 |. 81EC 00000000 SUB ESP,0 00401009 ...

4 a resposta

Como a reordenação de memória ajuda processadores e compiladores?

Estudei o modelo de memória Java e vi problemas de reordenação. Um exemplo simples: boolean first = false; boolean second = false; void setValues() { first = true; second = true; } void checkValues() { while(!second); assert first; }Reordenar ...

2 a resposta

A opção do GCC -O2 está quebrando esse pequeno programa ou tenho um comportamento indefinido [duplicado]

Esta pergunta já tem uma resposta aqui: Decrementar um ponteiro fora dos limites; incrementando-o em limites [duplicado] [/questions/18186987/decrementing-a-pointer-out-of-bounds-incrementing-it-into-bounds] 3 respostasPor que o ponteiro fora ...

2 a resposta

Podemos usar o `const_cast` para modificar uma variável constante? [duplicado

Esta pergunta já tem uma resposta aqui: ois valores diferentes no mesmo endereço de memóri [/questions/3593687/two-different-values-at-the-same-memory-address] respostasint main() { const int ia = 10; int *pia = const_cast<int*>(&ia); *pia = 5; ...

4 a resposta

As conversões redundantes são otimizadas?

Estou atualizando um código antigo e encontrei várias instâncias em que o mesmo objeto está sendo convertido repetidamente cada vez que uma de suas propriedades ou métodos precisa ser chamada. Exemplo if (recDate != null && recDate ...

1 a resposta

O GCC pode mesclar matrizes de cadeia de caracteres globais duplicadas?

Eu estou imaginando se é possível compilar usando o GCC com algum sinalizador de otimização para evitar duas matrizes duplicadas na seção .rodata? Assim, os endereços de memória seriam os mesmos. Por exemplo const char str [7] = "string"; const ...

3 a resposta

O volátil evita leituras ou gravações introduzidas?

Em C #,volatile palavra-chave @ garante que as leituras e gravações adquiram e liberem semântica, respectivamente. No entanto, ele diz algo sobre leituras ou gravações introduzidas? Por exemplo volatile Thing something; volatile int aNumber; ...

1 a resposta

Por que essa loja morta de unique_ptr não pode ser eliminada?

#include <memory> #include <vector> using namespace std; vector<unique_ptr<int>> e; void f(unique_ptr<int> u) { e.emplace_back(move(u)); }Para ambos Clang [https://godbolt.org/z/bKG8qy] e GCC [https://godbolt.org/z/VmR0wI], o snippet de código ...