diff --git a/src/perl/scripts2/check_compilers.pl b/src/perl/scripts2/check_compilers.pl
index dba6ba82668b4ce95cb191ca01ff5d8b77ca059a..b3c4dad10d989e9726bf7a70965a359c81dba48a 100755
--- a/src/perl/scripts2/check_compilers.pl
+++ b/src/perl/scripts2/check_compilers.pl
@@ -4,6 +4,7 @@ use Sort::Versions;
 use rob_misc;
 
 $|=1;
+
 #
 # Script to build binary_c with each available gcc and clang,
 # checking for errors and warnings
@@ -11,9 +12,13 @@ $|=1;
 
 my $args = "@ARGV";
 my $vb = ($args=~/-v/) ? 1 : 0;
+my %versions;
+my @compilers = ('gcc','clang');
+my $compiler_regexp = join('|',@compilers);
+
+print "Check binary_c compilers (vb = $vb)\n";
 
-foreach my $compiler ('gcc',
-                      'clang')
+foreach my $compiler (@compilers)
 {
     my @executables = find_executables($compiler);
 
@@ -46,25 +51,16 @@ sub find_executables
     } @executables;
     
     # get versions : we want a unique list by version
-    my %versions;
     foreach my $executable (@executables)
     {
-        my $v = (`$executable -v  2>\&1`=~/version (\S+)/)[0];
-        if($v)
+        my $v = version_of($executable);
+        if(!defined $v)
         {
-            $versions{$v} = $executable;
+            print "Warning: $executable gave no version\n";
         }
         else
         {
-            $v = (`$executable --version 2>\&1`=~/$compiler \S+ (\d.*)/)[0];
-            if($v)
-            {
-                $versions{$v} = $executable;
-            }
-            else
-            {
-                print "Warning: $executable gave no version\n";
-            } 
+            $versions{$v} = $executable;
         }
     }
 
@@ -74,34 +70,46 @@ sub find_executables
     return @executables;    
 }
 
+sub version_of
+{
+    # return version of the compiler, or undef
+    my ($executable) = @_;
+    return (`$executable -v  2>\&1`=~/version (\S+)/)[0] //
+        (`$executable --version 2>\&1`=~/($compiler_regexp) \S+ (\d.*)/)[0] //
+        undef;
+}
+
 sub build
 {
     my ($compiler) = @_; 
-
-    my $env = "export CC=$compiler";
-
-    my $r = `$env ; ./configure 2>/dev/stdout`; 
+    my $v = version_of($compiler)//'';
     
+    # environment for commnads 
+    my $env = "unset CC; export CC=$compiler; ";
+
+    # run configure
+    print "Configure with $compiler (version $v)\n";
+    my $cmd = "$env ./configure 2>/dev/stdout";
+    print "CMD $cmd\n"if($vb);
+    my $r = `$cmd`;
     print $r if($vb);
     
     if($r=~/Now run .\/make/)
     {
-        print "Building with $compiler\n";
-        my $r = `$env ; ./make clean; ./make 2>/dev/stdout`;
+        # configure successful : do the build
+        print "Building\n";
+        $cmd = "$env ./make clean 2>/dev/stdout; ./make 2>/dev/stdout";
+        print "CMD $cmd\n" if($vb);
+        $r = `$cmd`;
         
-        # clean the results
-        $r =~ s/Done.*//g;
-        $r =~ s/Make on.*//g;
-        $r =~ s/rm -f.*//g;
-        $r =~ s/BUILD.*//g;
-        $r =~ s/LINK.*//g;
-        $r =~ s/DONE.*//g;
+        # clean the results of successful statements
+        $r =~ s/(?:rm -f|Make on|Done|BUILD|LINK|DONE).*//g;
         $r =~ s/\n\s*\n//g;
         $r =~ s/^\s+//;
         $r =~ s/\s+$//;
         $r = rob_misc::remove_ANSI($r);
         
-        # check for warnings or errors
+        # check for remaining warnings or errors
         if($r)
         {
             # error or warning found
@@ -115,7 +123,7 @@ sub build
     }
     else
     {
-        print "Configure with compiler \"$compiler\" failed \n";
+        print "Configure with compiler \"$compiler\" (version $v) failed \n";
         exit;
     }
 }
diff --git a/src/setup/version.c b/src/setup/version.c
index 9af7bee81152d913286255b5877da1d83dfc392e..15a4f575b8726e9df73752234325b14113322c32 100644
--- a/src/setup/version.c
+++ b/src/setup/version.c
@@ -307,13 +307,14 @@ void version(struct stardata_t * RESTRICT const stardata)
             copy_stardata((const struct stardata_t*)_s,(struct stardata_t*)(STARDATA1),COPY_STARDATA_PREVIOUS_NONE); \
             Safe_free(_s);                              \
         }
-#define Swap_stardatas_with_move(STARDATA1,STARDATA2)   \
-        {                                               \
-            struct stardata_t * _s = New_stardata;      \
-            Move_stardata((STARDATA2),_s);              \
-            Move_stardata((STARDATA1),(STARDATA2));     \
-            Move_stardata(_s,(STARDATA1));              \
-            Safe_free(_s);                              \
+#define Swap_stardatas_with_move(STARDATA1,STARDATA2)           \
+        {                                                       \
+            struct stardata_t * _s = New_stardata;              \
+            struct stardata_t * _dummy_s MAYBE_UNUSED;          \
+            _dummy_s = Move_stardata((STARDATA2),_s);           \
+            _dummy_s = Move_stardata((STARDATA1),(STARDATA2));  \
+            _dummy_s = Move_stardata(_s,(STARDATA1));           \
+            Safe_free(_s);                                      \
         }
 
         /*