Give the test file for __builtin_expect() the correct name (try.c, not
Nicholas Clark [Mon, 24 Mar 2008 16:30:26 +0000 (16:30 +0000)]
builtin.c). Correct the user visible text, which was clearly a cut &
paste from __builtin_choose_expr. For both, also run the program as
part of the checks. Add a return value to the test program, and make
it return something useful (that the if statement worked).

p4raw-id: //depot/perl@33551

Configure

index d8b13c7..ef8e960 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -10554,7 +10554,7 @@ int main(void) {
 
 EOCP
     set try
-    if eval $compile; then
+    if eval $compile && $run ./try; then
        echo "Your C compiler supports __builtin_choose_expr."
        val="$define"
     else
@@ -10574,18 +10574,20 @@ case "$d_builtin_expect" in
 '')
     echo " "
     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
-    $cat >builtin.c <<'EOCP'
+    $cat >try.c <<'EOCP'
 int main(void) {
     int n = 50;
     if ( __builtin_expect(n, 0) ) n = 1;
+    /* Remember shell exit code truth is 0, C truth is non-zero */
+    return !(n == 1);
 }
 EOCP
     set try
-    if eval $compile; then
-       echo "Your C compiler supports __builtin_choose_expr."
+    if eval $compile && $run ./try; then
+       echo "Your C compiler supports __builtin_expect."
        val="$define"
     else
-       echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
+       echo "Your C compiler doesn't seem to understand __builtin_expect."
        val="$undef"
     fi
     ;;