kees added a comment.

Thanks for working on this!

Doing test builds with the Linux kernel correctly detects a number of trailing 
arrays that were being treated as flexible arrays (and need to be fixed in the 
kernel). This is exactly what was expected and wanted. :)



================
Comment at: clang/include/clang/Basic/LangOptions.def:425
 LANGOPT(MatrixTypes, 1, 0, "Enable or disable the builtin matrix type")
+LANGOPT(StrictFlexArrays, 1, 0, "Rely on strict definition of flexible arrays")
 
----------------
I think this option should likely also affect the logic in `-fsanitize=bounds` 
too, though I think that could be a separate change. Fixing `__bos` is more 
important. :)


================
Comment at: clang/test/CodeGen/object-size-flex-array.c:27
+  float f;
+  double c[2];
+} foo2_t;
----------------
Perhaps add some additional tests for "not a trailing array" here too, just for 
completeness?


```
typedef struct {
  double c[0];
  float f;
} fooM0_t;

typedef struct {
  double c[1];
  float f;
} fooM1_t;

typedef struct {
  double c[2];
  float f;
} fooM2_t;

```


================
Comment at: clang/test/CodeGen/object-size-flex-array.c:34
+  // CHECK: ret i32 %
+  // CHECK-STRICT: ret i32 %
+  return OBJECT_SIZE_BUILTIN(f->c, 1);
----------------
Shouldn't this explicitly return -1?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D126864/new/

https://reviews.llvm.org/D126864

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to