aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-08-21 20:56:28 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-08-21 20:56:28 -0400
commit02ba4b1678b9eca4262b2912c6e15030a2e75624 (patch)
tree97a9ed923fa45cbc4df5be6a1d32473d5298ec1f
parent478db39866ff5cc49dca50a8d5a7740d08122d26 (diff)
parentb2917e6be09138adcf7cfdab51a1909a30eec320 (diff)
downloadzig-02ba4b1678b9eca4262b2912c6e15030a2e75624.tar.gz
zig-02ba4b1678b9eca4262b2912c6e15030a2e75624.zip
Merge branch 'master' into shawnl-path_max
-rw-r--r--src/translate_c.cpp10
-rw-r--r--test/translate_c.zig54
2 files changed, 2 insertions, 62 deletions
diff --git a/src/translate_c.cpp b/src/translate_c.cpp
index 830ed27cd6..735a671bcc 100644
--- a/src/translate_c.cpp
+++ b/src/translate_c.cpp
@@ -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) {
AstNode *node = trans_create_node(c, NodeTypeIntLiteral);
node->data.int_literal.bigint = allocate<BigInt>(1);
- bool is_negative = 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 );
+ bigint_init_data(node->data.int_literal.bigint, aps_int.getRawData(), aps_int.getNumWords(), aps_int.isNegative());
return node;
+
}
static const Type *qual_type_canon(QualType qt) {
diff --git a/test/translate_c.zig b/test/translate_c.zig
index 1942b58fe8..b31e515aa2 100644
--- a/test/translate_c.zig
+++ b/test/translate_c.zig
@@ -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,
- \\};
- );
}