Andrew Kelley via llvm-dev
2017-Dec-03 05:35 UTC
[llvm-dev] DIEnumerator *createEnumerator(StringRef Name, int64_t Val); // add APInt Val overload
In the Zig frontend, users can set the types of enums like this:
const Foo = enum (u64) {
A = 18446744073709551615,
B = 1,
C = 2,
};
I cannot use the DebugInfo API
DIEnumerator *createEnumerator(StringRef Name, int64_t Val);
because 18446744073709551615 is outside the range of int64_t.
Even if this accepted an unsigned int, Zig frontend can do this:
const Bar = enum(u128) {
A = 340282366920938463463374607431768211455,
B = 1,
C = 2,
};
Now we're *really* out of luck.
I read the Dwarf 4 spec, and it supports arbitrary integer values for
enumerator constants.
Can we add an overload to createEnumerator to accept an APInt?
Regards,
Andrew
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20171203/6b65fa11/attachment.html>
Robinson, Paul via llvm-dev
2017-Dec-04 18:25 UTC
[llvm-dev] DIEnumerator *createEnumerator(StringRef Name, int64_t Val); // add APInt Val overload
Can we add an overload to createEnumerator to accept an APInt?
You might find it tricky to extend the metadata in a way that allowed passing an
APInt down to the DWARF emitter. But, leaving aside that implementation detail,
it looks like you have a valid use-case for proposing a patch that supports it.
--paulr
From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Andrew
Kelley via llvm-dev
Sent: Saturday, December 02, 2017 9:35 PM
To: LLVM Dev
Subject: [llvm-dev] DIEnumerator *createEnumerator(StringRef Name, int64_t Val);
// add APInt Val overload
In the Zig frontend, users can set the types of enums like this:
const Foo = enum (u64) {
A = 18446744073709551615,
B = 1,
C = 2,
};
I cannot use the DebugInfo API
DIEnumerator *createEnumerator(StringRef Name, int64_t Val);
because 18446744073709551615 is outside the range of int64_t.
Even if this accepted an unsigned int, Zig frontend can do this:
const Bar = enum(u128) {
A = 340282366920938463463374607431768211455,
B = 1,
C = 2,
};
Now we're *really* out of luck.
I read the Dwarf 4 spec, and it supports arbitrary integer values for enumerator
constants.
Can we add an overload to createEnumerator to accept an APInt?
Regards,
Andrew
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20171204/15cffdf2/attachment.html>