Revert "Merge branch 'mtn-translate-c-enum-vals'"

This reverts commit 937b822fa90181bf59f1c2ac45faab09342a183f, reversing
changes made to dd4b13ac0326aeb6c2c197bfac49f9e931ccee37.

Tests failing on Windows.

Re-opens #1360
This commit is contained in:
Andrew Kelley 2018-08-21 20:50:03 -04:00
parent 937b822fa9
commit b2917e6be0
2 changed files with 2 additions and 62 deletions

View File

@ -458,15 +458,9 @@ static const char *decl_name(const Decl *decl) {
static AstNode *trans_create_node_apint(Context *c, const llvm::APSInt &aps_int) { static AstNode *trans_create_node_apint(Context *c, const llvm::APSInt &aps_int) {
AstNode *node = trans_create_node(c, NodeTypeIntLiteral); AstNode *node = trans_create_node(c, NodeTypeIntLiteral);
node->data.int_literal.bigint = allocate<BigInt>(1); node->data.int_literal.bigint = allocate<BigInt>(1);
bool is_negative = aps_int.isNegative(); bigint_init_data(node->data.int_literal.bigint, aps_int.getRawData(), aps_int.getNumWords(), aps_int.isNegative());
// ACHTUNG: llvm::APSInt stores an int's sign inside of its getRawData;
// Internally to Zig we store an integer's sign outside of getRawData!
// ++(~aps_int) calls .flip() internally on the raw data to match Zig.
bigint_init_data( node->data.int_literal.bigint
, (is_negative ? (++(~aps_int)) : aps_int).getRawData()
, aps_int.getNumWords()
, is_negative );
return node; return node;
} }
static const Type *qual_type_canon(QualType qt) { static const Type *qual_type_canon(QualType qt) {

View File

@ -1358,58 +1358,4 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ } \\ }
\\} \\}
); );
cases.add("correctly translate enum init values",
\\enum EnumWithInits {
\\ VAL01 = 0,
\\ VAL02 = 1,
\\ VAL03 = 2,
\\ VAL04 = 3,
\\ VAL05 = -1,
\\ VAL06 = -2,
\\ VAL07 = -3,
\\ VAL08 = -4,
\\ VAL09 = VAL02 + VAL08,
\\ VAL10 = -1000012000,
\\ VAL11 = -1000161000,
\\ VAL12 = -1000174001,
\\ VAL13 = VAL09,
\\ VAL14 = VAL10,
\\ VAL15 = VAL11,
\\ VAL16 = VAL13,
\\ VAL17 = (VAL16 - VAL10 + 1),
\\ VAL18 = 0x1000000000000000L,
\\ VAL19 = VAL18 + VAL18 + VAL18 - 1,
\\ VAL20 = VAL19 + VAL19,
\\ VAL21 = VAL20 + 0xFFFFFFFFFFFFFFFF,
\\ VAL22 = 0xFFFFFFFFFFFFFFFF + 1,
\\ VAL23 = 0xFFFFFFFFFFFFFFFF,
\\};
,
\\pub const enum_EnumWithInits = extern enum(c_longlong) {
\\ VAL01 = 0,
\\ VAL02 = 1,
\\ VAL03 = 2,
\\ VAL04 = 3,
\\ VAL05 = -1,
\\ VAL06 = -2,
\\ VAL07 = -3,
\\ VAL08 = -4,
\\ VAL09 = -3,
\\ VAL10 = -1000012000,
\\ VAL11 = -1000161000,
\\ VAL12 = -1000174001,
\\ VAL13 = -3,
\\ VAL14 = -1000012000,
\\ VAL15 = -1000161000,
\\ VAL16 = -3,
\\ VAL17 = 1000011998,
\\ VAL18 = 1152921504606846976,
\\ VAL19 = 3458764513820540927,
\\ VAL20 = 6917529027641081854,
\\ VAL21 = 6917529027641081853,
\\ VAL22 = 0,
\\ VAL23 = -1,
\\};
);
} }