diff options
author | Tristan Gingold <tgingold@free.fr> | 2014-01-15 06:12:10 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2014-01-15 06:12:10 +0100 |
commit | d68bc3f41ad8a750eda9c50878c6728a84ad3097 (patch) | |
tree | 9284690b0797e3ffed8839611d4b8e53ee1d5894 /ortho/gcc | |
parent | 9b22b46458f2c80d87ffd957aa7df78cb98ee710 (diff) | |
download | ghdl-d68bc3f41ad8a750eda9c50878c6728a84ad3097.tar.gz ghdl-d68bc3f41ad8a750eda9c50878c6728a84ad3097.tar.bz2 ghdl-d68bc3f41ad8a750eda9c50878c6728a84ad3097.zip |
Add Alignof constant to get the alignment of a type.
Diffstat (limited to 'ortho/gcc')
-rw-r--r-- | ortho/gcc/ortho-lang.c | 6 | ||||
-rw-r--r-- | ortho/gcc/ortho_gcc.ads | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/ortho/gcc/ortho-lang.c b/ortho/gcc/ortho-lang.c index 370bdd633..900ca17ae 100644 --- a/ortho/gcc/ortho-lang.c +++ b/ortho/gcc/ortho-lang.c @@ -1431,6 +1431,12 @@ new_sizeof (tree atype, tree rtype) return fold (build1 (NOP_EXPR, rtype, size)); } +tree +new_alignof (tree atype, tree rtype) +{ + return build_int_cstu (rtype, TYPE_ALIGN_UNIT (atype)); +} + /* Convert the array expression EXP to a pointer. */ static tree array_to_pointer_conversion (tree exp); diff --git a/ortho/gcc/ortho_gcc.ads b/ortho/gcc/ortho_gcc.ads index 9b5356863..31005ae6c 100644 --- a/ortho/gcc/ortho_gcc.ads +++ b/ortho/gcc/ortho_gcc.ads @@ -233,6 +233,10 @@ package Ortho_Gcc is -- ATYPE cannot be an unconstrained array type. function New_Sizeof (Atype : O_Tnode; Rtype : O_Tnode) return O_Cnode; + -- Returns the alignment in bytes for ATYPE. The result is a literal of + -- unsgined type RTYPE. + function New_Alignof (Atype : O_Tnode; Rtype : O_Tnode) return O_Cnode; + -- Returns the offset of FIELD in its record. The result is a literal -- of unsigned type RTYPE. function New_Offsetof (Field : O_Fnode; Rtype : O_Tnode) return O_Cnode; @@ -598,6 +602,7 @@ private pragma Import (C, New_Access_Element); pragma Import (C, New_Sizeof); + pragma Import (C, New_Alignof); pragma Import (C, New_Offsetof); pragma Import (C, New_Address); |