1//===- subzero/crosstest/test_global_main.cpp - Driver for tests ----------===//
2//
3//                        The Subzero Code Generator
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Driver for crosstesting global variable access operations.
11//
12//===----------------------------------------------------------------------===//
13
14/* crosstest.py --test=test_global.cpp \
15   --driver=test_global_main.cpp --prefix=Subzero_ --output=test_global */
16
17#include <stdint.h>
18#include <cstdlib>
19#include <iostream>
20
21#include "test_global.h"
22namespace Subzero_ {
23#include "test_global.h"
24}
25
26int ExternName1 = 36363;
27float ExternName2 = 357.05e-10;
28char ExternName3[] = {'a', 'b', 'c'};
29struct Data {
30  int a;
31  float b;
32  double d;
33};
34
35struct Data SimpleData = {-111, 2.69, 55.19};
36
37struct Data *ExternName4 = &SimpleData;
38
39double ExternName5 = 3.44e26;
40
41int main(int argc, char **argv) {
42  // Prevent pnacl-opt from deleting "unused" globals.
43  if (argc < 0) {
44    std::cout << &ExternName1 << &ExternName2 << &ExternName3 << &SimpleData
45              << &ExternName4 << ExternName5;
46  }
47  size_t TotalTests = 0;
48  size_t Passes = 0;
49  size_t Failures = 0;
50
51  const uint8_t *SzArray, *LlcArray;
52  size_t SzArrayLen, LlcArrayLen;
53
54  size_t NumArrays = getNumArrays();
55  for (size_t i = 0; i < NumArrays; ++i) {
56    LlcArrayLen = -1;
57    SzArrayLen = -2;
58    LlcArray = getArray(i, LlcArrayLen);
59    SzArray = Subzero_::getArray(i, SzArrayLen);
60    ++TotalTests;
61    if (LlcArrayLen == SzArrayLen) {
62      ++Passes;
63    } else {
64      std::cout << i << ":LlcArrayLen=" << LlcArrayLen
65                << ", SzArrayLen=" << SzArrayLen << "\n";
66      ++Failures;
67    }
68
69    for (size_t i = 0; i < LlcArrayLen; ++i) {
70      ++TotalTests;
71      if (LlcArray[i] == SzArray[i]) {
72        ++Passes;
73      } else {
74        ++Failures;
75        std::cout << i << ":LlcArray[" << i << "] = " << (int)LlcArray[i]
76                  << ", SzArray[" << i << "] = " << (int)SzArray[i] << "\n";
77      }
78    }
79  }
80
81  std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes
82            << " Failures=" << Failures << "\n";
83  return Failures;
84}
85