#! /bin/sh

# Test a "bogus-warning" 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: compilation failed for ${MSGID}"
    exit $REG_ERROR
fi

grep -q 'warning' ${LOG}
if [ $? -eq 0 ]; then
    echo "`date`  bogus warning detected for ${MSGID}"
    exit $REG_FAIL
fi

echo "`date`  no bogus warning for ${MSGID}"
exit $REG_PASS
