This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix Configure's csym test for gcc's link time optimisation
[metaconfig.git] / U / compline / Csym.U
old mode 100644 (file)
new mode 100755 (executable)
index 74d275b..8648d5a
@@ -35,7 +35,7 @@
 ?LINT:set mistrustnm
 ?S:csym:
 ?S:    This shell variable is used internally by Configure to check
-?S:    wether a given C symbol is defined or not. A typical use is:
+?S:    whether a given C symbol is defined or not. A typical use is:
 ?S:            set symbol result [-fva] [previous]
 ?S:            eval $csym
 ?S:    That will set result to 'true' if the function [-f], variable [-v]
@@ -97,13 +97,13 @@ yes)
                if $contains $tlook $tf >/dev/null 2>&1; then
                        tval=true;
                elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
-                       echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+                       echo "volatile int dummy = 0; $extern_C void *$1$tdc; void *(*(p()))$tdc { return dummy + &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
                        $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
                        $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
                        $rm_try;
                fi;
        else
-               echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+               echo "volatile int dummy = 0; $extern_C void *$1$tdc; void *(*(p()))$tdc { return dummy + &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
                $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
                $rm_try;
        fi;