diff --git a/compiler/ncgrtti.pas b/compiler/ncgrtti.pas index bf1e6ae147..dd43d8b0cb 100644 --- a/compiler/ncgrtti.pas +++ b/compiler/ncgrtti.pas @@ -393,6 +393,7 @@ implementation hp : tenumsym; begin current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(tkEnumeration)); + current_asmdata.asmlists[al_rtti].concat(Cai_align.Create(cshortstringtype.alignment)); write_rtti_name(def); if (tf_requires_proper_alignment in target_info.flags) then current_asmdata.asmlists[al_rtti].concat(Cai_align.Create(sizeof(TConstPtrUInt))); diff --git a/tests/webtbs/tw10033.pp b/tests/webtbs/tw10033.pp index 396576b28b..cf357a04f2 100644 --- a/tests/webtbs/tw10033.pp +++ b/tests/webtbs/tw10033.pp @@ -2,13 +2,17 @@ // writing and reading of rtti for enums, both "dense" and // "sparse" enumerations (different rtti is generated and // different code used for generating and reading) -{$mode objfpc} type + // "dense" unnamed enumeration + Txx = set of (_one, _two, _three); + // "sparse" unnamed enumeration + Tyy = set of (_zero := 0, _ten := 10, _twenty := 20); + // "dense" enumeration Tx = (one,two,three); Txxx = set of Tx; // "sparse" enumeration - Ty =(zero := 0, ten := 10, twenty := 20); + Ty = (zero := 0, ten := 10, twenty := 20); Tyyy = set of Ty; procedure error(number : longint); @@ -21,8 +25,17 @@ var x : txxx; y : tyyy; err : word; + + _x : txx; + _y : tyy; begin + writeln(low(_x)); + writeln(high(_x)); + + writeln(low(_y)); + writeln(high(_y)); + writeln(low(x)); writeln(high(x));