[PATCH] Microsoft 64-bit Record Layout

David Majnemer david.majnemer at gmail.com
Wed Oct 23 14:49:49 PDT 2013



================
Comment at: lib/AST/RecordLayoutBuilder.cpp:2591
@@ -2908,2 +2590,3 @@
 
+  // vtordisps are always 4 bytes (even in 64-bit mode)
   if (HasVtordisp)
----------------
Reid Kleckner wrote:
> Yep, this is true throughout the ABI.  It seems objects cannot be larger than 2**32.
This is a hard limit for arrays: http://msdn.microsoft.com/en-us/library/vstudio/s0z0bbfe.aspx

However, I can pass this limit with structs:

  #include <stdio.h>
  struct S {
    char C1, C2;
    char CArray[2147483647LL];
  };
  int main() {
    printf("sizeof(S): %llu", (unsigned long long)sizeof(S));
  }

This gives me 2147483649 on x86_32 and x86_64


http://llvm-reviews.chandlerc.com/D2003



More information about the cfe-commits mailing list