#!/bin/bash

PCC3=../../pcc3
CC="gcc -m64"
CCS="gcc -S -m64"


cd basic
echo "#### BASIC ####"
echo ""

echo "#### hello.c ####"
$CC hello.c
./a.out >Q
$PCC3 hello.c
$CC hello.s
./a.out >QQ
cmp Q QQ
echo ""

echo "#### t1.c ####"
$CC t1.c
./a.out >Q
$PCC3 t1.c
$CC t1.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### t3.c ####"
$CC t3.c
./a.out >Q
$PCC3 t3.c
$CC t3.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### josh.c ####"
$CC josh.c
./a.out >Q
$PCC3 josh.c
$CC josh.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### assign1.c ####"
$CC assign1.c
./a.out >Q
$PCC3 assign1.c
$CC assign1.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### assign2.c ####"
$CC assign2.c
./a.out >Q
$PCC3 assign2.c
$CC assign2.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### t17.c ####"
$CC t17.c
./a.out >Q
$PCC3 t17.c
$CC t17.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### t18.c ####"
$CC t18.c
./a.out >Q
$PCC3 t18.c
$CC t18.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### t19.c ####"
$CC t19.c
./a.out >Q
$PCC3 t19.c
$CC t19.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### ryan.c ####"
$CC ryan.c
./a.out >Q
$PCC3 ryan.c
$CC ryan.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### ryan2.c ####"
$CC ryan2.c
./a.out >Q
$PCC3 ryan2.c
$CC ryan2.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### ryan3.c ####"
$CC ryan3.c
./a.out >Q
$PCC3 ryan3.c
$CC ryan3.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### ryan5.c ####"
$CC ryan5.c
./a.out >Q
$PCC3 ryan5.c
$CC ryan5.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### constant1.c ####"
$CC constant1.c
./a.out >Q
$PCC3 constant1.c
$CC constant1.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### call.c ####"
$CC call.c
./a.out >Q
$PCC3 call.c
$CC call.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### structPass.c ####"
$CC structPass.c
./a.out >Q
$PCC3 structPass.c
$CC structPass.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### structReturn.c ####"
$CC structReturn.c
./a.out >Q
$PCC3 structReturn.c
$CC structReturn.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### structReturn2.c ####"
$CC structReturn2.c
./a.out >Q
$PCC3 structReturn2.c
$CC structReturn2.s
./a.out >QQ
diff Q QQ
echo ""

echo "#### staticFunc[AB].c ####"
$CC staticFuncA.c staticFuncB.c
./a.out >Q
$PCC3 staticFuncA.c
$PCC3 staticFuncB.c
$CC staticFuncA.s staticFuncB.s
./a.out >QQ
diff Q QQ
echo ""

