diff --git a/divine/cc/native.cpp b/divine/cc/native.cpp
index e7e53810b335828a0967feeee29ac067d4b6ca64..6d75e22566b517cdcdc2dcc3c1941ba07a90996f 100644
--- a/divine/cc/native.cpp
+++ b/divine/cc/native.cpp
@@ -83,14 +83,7 @@ namespace divine::cc
             ld_args_c.push_back( _ld_args[i].c_str() );
 
         auto ld_job = drv->getJobs( ld_args_c ).back();
-        if ( _po.use_system_ld )
-        {
-            ld_job.args.insert( ld_job.args.begin(), ld_job.name );
-            auto r = brick::proc::spawnAndWait( brick::proc::CaptureStderr, ld_job.args );
-            if ( !r )
-                throw cc::CompileError( "failed to link, ld exited with " + to_string( r ) );
-        }
-        else
+        if ( _po.use_lld )
         {
             ld_job.args.insert( ld_job.args.begin(), "divcc" );
             std::vector< const char * > lld_job_c;
@@ -102,6 +95,13 @@ namespace divine::cc
             if ( !linked )
                 throw cc::CompileError( "lld failed, not linked" );
         }
+        else
+        {
+            ld_job.args.insert( ld_job.args.begin(), ld_job.name );
+            auto r = brick::proc::spawnAndWait( brick::proc::CaptureStderr, ld_job.args );
+            if ( !r )
+                throw cc::CompileError( "failed to link, ld exited with " + to_string( r ) );
+        }
 
         std::unique_ptr< llvm::Module > mod = link_bitcode();
         std::string file_out = _po.outputFile != "" ? _po.outputFile : "a.out";
diff --git a/divine/cc/options.cpp b/divine/cc/options.cpp
index f181eb9494cebff15fb952fff5c48e540b3b5a1b..793bc61913bad5f852003e41981c694b8b489e6e 100644
--- a/divine/cc/options.cpp
+++ b/divine/cc/options.cpp
@@ -100,8 +100,8 @@ namespace divine::cc
                 po.toObjectOnly = true;
             else if ( *it == "-E" )
                 po.preprocessOnly = true;
-            else if ( *it == "--use-system-ld" )
-                po.use_system_ld = true;
+            else if ( *it == "--use-lld" )
+                po.use_lld = true;
             else if ( *it == "-g" )
                 po.opts.emplace_back( "-debug-info-kind=standalone" );
             else
diff --git a/divine/cc/options.hpp b/divine/cc/options.hpp
index f55eb28e68e9fc45efc8eb744d76089f76502f76..65b199a007a01aca217dbda53176a88fd61ba78f 100644
--- a/divine/cc/options.hpp
+++ b/divine/cc/options.hpp
@@ -37,7 +37,7 @@ namespace divine::cc
         bool preprocessOnly = false;
         bool hasHelp = false;
         bool hasVersion = false;
-        bool use_system_ld = false;
+        bool use_lld = false;
     };
 
     ParsedOpts parseOpts( std::vector< std::string > rawCCOpts );