diff --git a/rts/include/Stg.h b/rts/include/Stg.h
index 4d1a5f71be888b4f877f216ec147955e7cefd0cf..edce9504681480c0126b89da23b09f21b10c585e 100644
--- a/rts/include/Stg.h
+++ b/rts/include/Stg.h
@@ -108,7 +108,7 @@
 
 /* Compute offsets of struct fields
  */
-#define STG_FIELD_OFFSET(s_type, field) ((StgWord)&(((s_type*)0)->field))
+#define STG_FIELD_OFFSET(s_type, field) __builtin_offsetof(s_type, field)
 
 /*
  * 'Portable' inlining: