Skip to content
Snippets Groups Projects
Commit a2efb8d9 authored by Lorn Potter's avatar Lorn Potter
Browse files

wasm: fix unicode toUpper issues

see https://github.com/kripken/emscripten/issues/4540



On large bitfields, emscripten creates types such as
i472, which 'legalization passes don't know how to
convert into legal code'
Adding a dummy field every 64 bits forces alignment
which in turn forces emscripten to create i64 types
instead.

Task-number: QTBUG-66621
Task-number: QTBUG-69421
Change-Id: I5bfd2079ac8f35ced8b59a1d2e3c657993a70986
Reviewed-by: default avatarEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
parent 51a614a4
Branches
Tags
No related merge requests found
...@@ -72,6 +72,9 @@ struct Properties { ...@@ -72,6 +72,9 @@ struct Properties {
signed short mirrorDiff : 16; signed short mirrorDiff : 16;
ushort lowerCaseSpecial : 1; ushort lowerCaseSpecial : 1;
signed short lowerCaseDiff : 15; signed short lowerCaseDiff : 15;
#ifdef Q_OS_WASM
unsigned char : 0; //wasm 64 packing trick
#endif
ushort upperCaseSpecial : 1; ushort upperCaseSpecial : 1;
signed short upperCaseDiff : 15; signed short upperCaseDiff : 15;
ushort titleCaseSpecial : 1; ushort titleCaseSpecial : 1;
...@@ -80,6 +83,9 @@ struct Properties { ...@@ -80,6 +83,9 @@ struct Properties {
signed short caseFoldDiff : 15; signed short caseFoldDiff : 15;
ushort unicodeVersion : 8; /* 5 used */ ushort unicodeVersion : 8; /* 5 used */
ushort nfQuickCheck : 8; ushort nfQuickCheck : 8;
#ifdef Q_OS_WASM
unsigned char : 0; //wasm 64 packing trick
#endif
ushort graphemeBreakClass : 5; /* 5 used */ ushort graphemeBreakClass : 5; /* 5 used */
ushort wordBreakClass : 5; /* 5 used */ ushort wordBreakClass : 5; /* 5 used */
ushort sentenceBreakClass : 8; /* 4 used */ ushort sentenceBreakClass : 8; /* 4 used */
......
...@@ -2473,6 +2473,10 @@ static QByteArray createPropertyInfo() ...@@ -2473,6 +2473,10 @@ static QByteArray createPropertyInfo()
out += ", "; out += ", ";
out += QByteArray::number( p.lowerCaseDiff ); out += QByteArray::number( p.lowerCaseDiff );
out += ", "; out += ", ";
out += "#ifdef Q_OS_WASM \n"
// " unsigned char : 0; //wasm 64 packing trick \n"
out += "#endif \n"
out += ", ";
// " ushort upperCaseSpecial : 1;\n" // " ushort upperCaseSpecial : 1;\n"
// " signed short upperCaseDiff : 15;\n" // " signed short upperCaseDiff : 15;\n"
out += QByteArray::number( p.upperCaseSpecial ); out += QByteArray::number( p.upperCaseSpecial );
...@@ -2497,6 +2501,10 @@ static QByteArray createPropertyInfo() ...@@ -2497,6 +2501,10 @@ static QByteArray createPropertyInfo()
// " ushort nfQuickCheck : 8;\n" // " ushort nfQuickCheck : 8;\n"
out += QByteArray::number( p.nfQuickCheck ); out += QByteArray::number( p.nfQuickCheck );
out += ", "; out += ", ";
out += "#ifdef Q_OS_WASM \n"
// " unsigned char : 0; //wasm 64 packing trick \n"
out += "#endif \n"
out += ", ";
// " ushort graphemeBreakClass : 5; /* 5 used */\n" // " ushort graphemeBreakClass : 5; /* 5 used */\n"
// " ushort wordBreakClass : 5; /* 5 used */\n" // " ushort wordBreakClass : 5; /* 5 used */\n"
// " ushort sentenceBreakClass : 8; /* 4 used */\n" // " ushort sentenceBreakClass : 8; /* 4 used */\n"
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment