#! /bin/sh

# Test a "wrong-code" GCC bug, using environment variables set in
# several reghunt scripts and configuration files.
#
# Copyright (C) 2007-2023 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# For a copy of the GNU General Public License, write the the
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02111-1301, USA.

ID=$1

LOGID=`printf "%04d" ${ID}`
LOG=${BUGID}.${LOGID}.out
MSGID="bug ${BUGID}, id ${ID}"

$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1

if [ $? -ne 0 ]; then
    echo "`date`  unexpected failure: test compilation failed for ${MSGID}"
    exit $REG_ERROR
fi

./a.out >> ${LOG} 2>&1
if [ $? -ne 0 ]; then
    echo "`date`  test run aborted for ${MSGID}"
    exit $REG_FAIL
fi

echo "`date`  test ran successfully for ${MSGID}"
exit $REG_PASS
