Issue |
157592
|
Summary |
[libc++] ABI break: std::__set_symmetric_difference_result
|
Labels |
libc++,
ABI,
regression:21
|
Assignees |
|
Reporter |
zibi2
|
Compiling `std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/ranges_set_symmetric_difference.pass.cpp` with `-Xclang -fdump-record-layouts-canonical -fsyntax-only` against LLVM 19 and LLVM 21 will result with the following difference:
```
0 | struct std::__set_symmetric_difference_result<class forward_iterator<int *>, int *, int *>
0 | class forward_iterator<int *> __in1_
0 | int * it_
- 4 | int * __in2_
- 8 | int * __out_
- | [sizeof=12, dsize=12, align=4,
- | nvsize=12, nvalign=4]
+ 4 | struct support::double_move_tracker tracker_
+ 4 | _Bool moved_from_
+ 8 | int * __in2_
+ 12 | int * __out_
+ | [sizeof=16, dsize=16, align=4,
+ | nvsize=16, nvalign=4]
```
I'm in the process of getting smaller test case which demonstrate the issue.
I also see difference with: `struct std::ranges::in_in_out_result`, for example:
```
0 | struct std::ranges::in_in_out_result<class cpp20_input_iterator<int *>, class contiguous_iterator<int *>, class contiguous_iterator<int *> >
0 | class cpp20_input_iterator<int *> in1
0 | int * it_
- 4 | class contiguous_iterator<int *> in2
- 4 | int * it_
- 8 | class contiguous_iterator<int *> out
+ 4 | struct support::double_move_tracker tracker_
+ 4 | _Bool moved_from_
+ 8 | class contiguous_iterator<int *> in2
8 | int * it_
- | [sizeof=12, dsize=12, align=4,
- | nvsize=12, nvalign=4]
+ 12 | struct support::double_move_tracker tracker_
+ 12 | _Bool moved_from_
+ 16 | class contiguous_iterator<int *> out
+ 16 | int * it_
+ 20 | struct support::double_move_tracker tracker_
+ 20 | _Bool moved_from_
+ | [sizeof=24, dsize=21, align=4,
+ | nvsize=21, nvalign=4]
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs