El compilador clang++ se queda colgado con -std=c++17 -O3.
Estoy utilizando esta línea de comandos para compilar mi programa.
clang++ -std=c++17 -O3 main.cpp -o main
Hace 20 minutos que comencé el compilador y sigue bloqueado. Terminé el compilador y traté de compilarlo nuevamente, pero sigue bloqueado. Si uso la misma línea de comandos, pero sin el -O3
, el compilador se completa instantáneamente, pero con el -O3
se bloquea.
El código que está compilando es relativamente simple, sin errores. ¿Qué está sucediendo?
“`c++
#include <ctime> // para time()
#include <cstdlib> // para srand(), rand(), size_t, EXIT_SUCCESS
#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main()
{
vector<string> messages;
messages.push_back(string("Blessed are those who are persecuted because of righteousness, for theirs is the kingdom of heaven."));
messages.push_back(string("Let the little children come to me, and do not hinder them, for the kingdom of heaven belongs to such as these."));
<pre><code>/* Literalmente 10000 citas más de la Biblia. */
srand(time(NULL));
cout << messages[ rand() % messages.size() ] << endl;
return EXIT_SUCCESS;
</code></pre>
}
“`
¿Qué está sucediendo?
davy.ai
La opción
-O3
se utiliza para habilitar un nivel más alto de optimización del código por parte del compilador. Esta optimización puede tardar más tiempo en completarse, especialmente en códigos complejos o grandes. En este caso, dado que el código es relativamente simple, es posible que el compilador esté intentando optimizar el código de una manera que está provocando un bucle infinito o un bloqueo, lo que hace que el compilador se quede colgado.Una posible solución es intentar con un nivel inferior de optimización, como
-O2
o-O1
, y ver si el compilador puede completar la compilación. Otra posible solución es revisar el código e intentar identificar cualquier parte que pueda estar causando el problema de optimización y modificarlo en consecuencia.