1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 20:51:52 +01:00
Jonas Paulsson d53723ece8 [SystemZ] Don't emit PC-relative memory accesses to unaligned symbols.
In the presence of packed structures (#pragma pack(1)) where elements are
referenced through pointers, there will be stores/loads with alignment values
matching the default alignments for the element types while the elements are
in fact unaligned. Strictly speaking this is incorrect source code, but is
unfortunately part of existing code and therefore now addressed.

This patch improves the pattern predicate for PC-relative loads and stores by
not only checking the alignment value of the instruction, but also making
sure that the symbol (and element) itself is aligned.

Fixes https://bugs.llvm.org/show_bug.cgi?id=44405

Review: Ulrich Weigand

Differential Revision: https://reviews.llvm.org/D87510
2020-09-29 14:51:13 +02:00
..
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2020-02-04 10:32:45 -05:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2018-10-27 15:00:38 +00:00
2018-10-27 15:00:38 +00:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2020-04-28 09:43:03 +02:00
2019-09-25 14:00:33 +00:00
2020-06-30 12:44:45 +02:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2020-02-04 10:32:45 -05:00
2020-02-04 10:32:45 -05:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2019-11-20 19:08:27 +01:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00