
The main change is in building the libraries, where -fshort-enums was passed on RISC-V while other C files weren't compiled with this setting. Note: the test already passed before this change, but it seems like a good idea to explicitly test for enum size consistency. There is also not a particular reason not to pass -fshort-enums on RISC-V. Perhaps it's better to do it there too (on baremetal targets that don't have to worry about binary compatibility).
53 строки
1,1 КиБ
C
53 строки
1,1 КиБ
C
#include "main.h"
|
|
|
|
int global = 3;
|
|
bool globalBool = 1;
|
|
bool globalBool2 = 10; // test narrowing
|
|
float globalFloat = 3.1;
|
|
double globalDouble = 3.2;
|
|
_Complex float globalComplexFloat = 4.1+3.3i;
|
|
_Complex double globalComplexDouble = 4.2+3.4i;
|
|
_Complex double globalComplexLongDouble = 4.3+3.5i;
|
|
char globalChar = 100;
|
|
void *globalVoidPtrSet = &global;
|
|
void *globalVoidPtrNull;
|
|
int64_t globalInt64 = -(2LL << 40);
|
|
collection_t globalStruct = {256, -123456, 3.14, 88};
|
|
int globalStructSize = sizeof(globalStruct);
|
|
short globalArray[3] = {5, 6, 7};
|
|
joined_t globalUnion;
|
|
int globalUnionSize = sizeof(globalUnion);
|
|
option_t globalOption = optionG;
|
|
bitfield_t globalBitfield = {244, 15, 1, 2, 47, 5};
|
|
|
|
int smallEnumWidth = sizeof(option2_t);
|
|
|
|
int fortytwo() {
|
|
return 42;
|
|
}
|
|
|
|
int add(int a, int b) {
|
|
return a + b;
|
|
}
|
|
|
|
int doCallback(int a, int b, binop_t callback) {
|
|
return callback(a, b);
|
|
}
|
|
|
|
void store(int value, int *ptr) {
|
|
*ptr = value;
|
|
}
|
|
|
|
void unionSetShort(short s) {
|
|
globalUnion.s = s;
|
|
}
|
|
|
|
void unionSetFloat(float f) {
|
|
globalUnion.f = f;
|
|
}
|
|
|
|
void unionSetData(short f0, short f1, short f2) {
|
|
globalUnion.data[0] = 5;
|
|
globalUnion.data[1] = 8;
|
|
globalUnion.data[2] = 1;
|
|
}
|