dyung wrote:

We also have a couple of internal tests that seem to be failing after this 
commit. Consider the following code:
```c++
char print_tmp[1];
void print(char *, void *data, unsigned size) {
  unsigned char *bytes = (unsigned char *)data;
  for (unsigned i = 0; i != size; ++i)
    sprintf(print_tmp + i * 2, "%02x", bytes[size - 1 - i]);
  printf(print_tmp);
}
#define PRINT(VAR) print(#VAR, &VAR, sizeof(VAR))
struct {
  long b : 17;
} test141_struct_id29534;
struct test141_struct_id29574_ {
  test141_struct_id29574_() { INIT(172, *this); }
  unsigned a : 15;
} test141_struct_id29574;
int main() {
  long id29692 = test141_struct_id29534.b = test141_struct_id29574.a;
  PRINT(id29692);
}
```
When compiled without optimizations (and before this change with optimization) 
it would print out the value `0000000000002dac`. But after this change, when 
optimizations are enabled, the program now prints out `000000000000adac`.

You can see the difference at https://godbolt.org/z/vjPvGT5G9.

https://github.com/llvm/llvm-project/pull/71534
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to