Support reference types in the DWARF transform (#1986)

This commit is contained in:
Yury Delendik
2020-07-07 09:43:03 -05:00
committed by GitHub
parent 70cef0a433
commit 9900641674
4 changed files with 105 additions and 7 deletions

View File

@@ -0,0 +1,40 @@
// Compile with:
// clang++ --target=wasm32 fraction-norm.cc -o fraction-norm.wasm -g \
// -O0 -nostdlib -fdebug-prefix-map=$PWD=.
struct Fraction {
long numerator;
long denominator;
};
inline long abs(long x)
{
return x >= 0 ? x : -x;
}
extern "C"
void norm(Fraction &n)
{
long a = abs(n.numerator), b = abs(n.denominator);
if (a == 0 || b == 0) return;
do {
a %= b;
if (a == 0) break;
b %= a;
} while (b > 0);
long gcd = a + b;
if (n.denominator > 0) {
n.numerator /= gcd;
n.denominator /= gcd;
} else {
n.numerator /= -gcd;
n.denominator /= -gcd;
}
}
extern "C"
void _start()
{
Fraction c = {6, 27};
norm(c);
}