| Index: crosstest/test_global.cpp
|
| diff --git a/crosstest/test_global.cpp b/crosstest/test_global.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a5a2f610a5bc78c632f00e9f18ea7964ca773433
|
| --- /dev/null
|
| +++ b/crosstest/test_global.cpp
|
| @@ -0,0 +1,65 @@
|
| +#include <stdint.h>
|
| +#include <cstdlib>
|
| +
|
| +#include "test_global.h"
|
| +
|
| +// Partially initialized array
|
| +int ArrayInitPartial[10] = { 60, 70, 80, 90, 100 };
|
| +int ArrayInitFull[] = { 10, 20, 30, 40, 50 };
|
| +const int ArrayConst[] = { -10, -20, -30 };
|
| +static double ArrayDouble[10] = { 0.5, 1.5, 2.5, 3.5 };
|
| +
|
| +#if 0
|
| +#define ARRAY(a) \
|
| + { (uint8_t *)(a), sizeof(a) }
|
| +
|
| +struct {
|
| + uint8_t *ArrayAddress;
|
| + size_t ArraySizeInBytes;
|
| +} Arrays[] = {
|
| + ARRAY(ArrayInitPartial),
|
| + ARRAY(ArrayInitFull),
|
| + ARRAY(ArrayConst),
|
| + ARRAY(ArrayDouble),
|
| +};
|
| +size_t NumArraysElements = sizeof(Arrays) / sizeof(*Arrays);
|
| +#endif // 0
|
| +
|
| +size_t getNumArrays() {
|
| + return 4;
|
| + // return NumArraysElements;
|
| +}
|
| +
|
| +const uint8_t *getArray(size_t WhichArray, size_t &Len) {
|
| + // Using a switch statement instead of a table lookup because such a
|
| + // table is represented as a kind of initializer that Subzero
|
| + // doesn't yet support. Specifically, the table becomes constant
|
| + // aggregate data, and it contains relocations. TODO(stichnot):
|
| + // switch over to the cleaner table-based method when global
|
| + // initializers are fully implemented.
|
| + switch (WhichArray) {
|
| + default:
|
| + Len = -1;
|
| + return NULL;
|
| + case 0:
|
| + Len = sizeof(ArrayInitPartial);
|
| + return (uint8_t *)&ArrayInitPartial;
|
| + case 1:
|
| + Len = sizeof(ArrayInitFull);
|
| + return (uint8_t *)&ArrayInitFull;
|
| + case 2:
|
| + Len = sizeof(ArrayConst);
|
| + return (uint8_t *)&ArrayConst;
|
| + case 3:
|
| + Len = sizeof(ArrayDouble);
|
| + return (uint8_t *)&ArrayDouble;
|
| + }
|
| +#if 0
|
| + if (WhichArray >= NumArraysElements) {
|
| + Len = -1;
|
| + return NULL;
|
| + }
|
| + Len = Arrays[WhichArray].ArraySizeInBytes;
|
| + return Arrays[WhichArray].ArrayAddress;
|
| +#endif // 0
|
| +}
|
|
|