| //===- subzero/crosstest/test_global_main.cpp - Driver for tests ----------===// | |
| // | |
| // The Subzero Code Generator | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // Driver for crosstesting global variable access operations. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /* crosstest.py --test=test_global.cpp \ | |
| --driver=test_global_main.cpp --prefix=Subzero_ --output=test_global */ | |
| #include <stdint.h> | |
| #include <cstdlib> | |
| #include <iostream> | |
| #include "test_global.h" | |
| namespace Subzero_ { | |
| #include "test_global.h" | |
| } | |
| int ExternName1 = 36363; | |
| float ExternName2 = 357.05e-10; | |
| char ExternName3[] = {'a', 'b', 'c'}; | |
| struct Data { | |
| int a; | |
| float b; | |
| double d; | |
| }; | |
| struct Data SimpleData = {-111, 2.69, 55.19}; | |
| struct Data *ExternName4 = &SimpleData; | |
| double ExternName5 = 3.44e26; | |
| int main(int argc, char **argv) { | |
| // Prevent pnacl-opt from deleting "unused" globals. | |
| if (argc < 0) { | |
| std::cout << &ExternName1 << &ExternName2 << &ExternName3 << &SimpleData | |
| << &ExternName4 << ExternName5; | |
| } | |
| size_t TotalTests = 0; | |
| size_t Passes = 0; | |
| size_t Failures = 0; | |
| const uint8_t *SzArray, *LlcArray; | |
| size_t SzArrayLen, LlcArrayLen; | |
| size_t NumArrays = getNumArrays(); | |
| for (size_t i = 0; i < NumArrays; ++i) { | |
| LlcArrayLen = -1; | |
| SzArrayLen = -2; | |
| LlcArray = getArray(i, LlcArrayLen); | |
| SzArray = Subzero_::getArray(i, SzArrayLen); | |
| ++TotalTests; | |
| if (LlcArrayLen == SzArrayLen) { | |
| ++Passes; | |
| } else { | |
| std::cout << i << ":LlcArrayLen=" << LlcArrayLen | |
| << ", SzArrayLen=" << SzArrayLen << "\n"; | |
| ++Failures; | |
| } | |
| for (size_t i = 0; i < LlcArrayLen; ++i) { | |
| ++TotalTests; | |
| if (LlcArray[i] == SzArray[i]) { | |
| ++Passes; | |
| } else { | |
| ++Failures; | |
| std::cout << i << ":LlcArray[" << i << "] = " << (int)LlcArray[i] | |
| << ", SzArray[" << i << "] = " << (int)SzArray[i] << "\n"; | |
| } | |
| } | |
| } | |
| std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes | |
| << " Failures=" << Failures << "\n"; | |
| return Failures; | |
| } |