<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/127781>127781</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[GlobalISel] MIR serialization issue with G_PTR_ADD instruction flags
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
5c4lar
</td>
</tr>
</table>
<pre>
## Description
When using `llc` with Global ISel, the MIR file generated by `-stop-after=irtranslator` contains `nuw nusw` flags on a `G_PTR_ADD` instruction, but these flags cannot be parsed when reading the MIR file back.
## Steps to Reproduce
1. Create a simple C file with a struct access:
```c
typedef struct Point {
int x;
int y;
} Point;
int main() {
Point p;
p.x = 10;
p.y = 20;
return 0;
}
```
2. Generate MIR using: `
```bash
clang -O0 -S -emit-llvm test.c -o - | llc -x ir -o test.mir -stop-after=irtranslator -global-isel
```
3. Try to use the generated MIR:
```bash
llc -global-isel -x mir test.mir
```
## Current Behavior
The command fails with:
```
error: test.mir:109:20: expected a machine instruction
%6:_(p0) = nuw nusw G_PTR_ADD %1, %5(s64)
```
## Expected Behavior
The MIR file should be parseable by `llc`, since it was generated by LLVM's own toolchain.
## Environment
- LLVM version: 19.1.7 (Homebrew)
- Target: arm64-apple-macosx15.0.0
- OS: macOS
## Additional Notes
The problematic instruction appears to be a pointer arithmetic operation for struct field access. The `nuw nusw` flags are preserved from the LLVM IR getelementptr instruction, but the MIR parser doesn't seem to handle these flags for `G_PTR_ADD`.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0VU1v2zgQ_TX0ZSCBoizLPvigxk03QLstkmD3WIyoscVdihRIKo731y9IK4lttEEAGcPHmffmi-i9OhiiLas-sWq3wCn01m0rudToFq3tTlvGGyZKJkrYkZdOjUFZw3jzd08GJq_MAdiKay3ZisNRhR6-aNuihocn0kzcQegJvj08wl5pggMZchiog_YU72U-2DHDfSDHyp1ywaHxGoN10Z20JqAyPiLNdAQz-WO07zUePFgDGE--_Pzx_Piz2e3ikTI-uEkmkuIO2ilEAp7mOxKNsQFaghGdpw6OUYYj7KKQK6otyn_zqP49AU-BRg_BwiONznaTJMabIoc7RxgIELwaRk1wd3aQkoFw5gMoJXnPyugPACLx87-cDeE0Ukf7N_wPq0wAVn-aj-NftLyy8tZ0-jCxene-eWE6fyJwQGWYWDOxuXF8DjZeux7zV2DlDgp-az8lu7ixOwqTM8Cv2NyqZbwROXyZ2yBlOzURKxs4H1_BW_T9bJMazQGy7xyyJ8hoUCHT-mWAQD7kEjILGbD6DrSWkL2CctGUDof4-7eNBtkhNWymPOlf0C1zeHanWPbJU2qRjyb-9vD4i4pekE5kLvxHZpHOG68Iuww2d9rd5ByZAJ-oxxdlI-y5J5B2GNB0sEelfeqvc_RLD-ScdTGb7yHKpuAbVjaxXg3Q60gyckcYUPbK0NXMzFJEtWJl85OJ9chTu5Q7eJtAeB-4iCvimDFRVUys_WrJxOaG0Czp81vcG03v8-Z7O-nufTSxjTN4-lguMY5XRhKoAEf017vk69e_vjFRe7BHA8FaLXtU5np-P5sX5awZyATGmyzdgRdyPgovGyg2eZHXwMT6DztQ6-h4VpPBM7oDhYhBN6yWGY6jpmxAaf1rUeU85wn2_SlCBpTfn64CN12nYnZRw582kJ-lj862mgYMSl7WAHAcCV3aNG1cK2OcTnKAToV-oAi3Y5QewXvr3lbGXpHu5kWTQ4zwy72JLoYmT-6FOtg7O6SuTtl4eIQDBdIUkzQG95t9mqqWyuSgs-QNE3UATzRE0j2aTtPV3o0sb1Z1vui2ZbcpN7igbVGXm81KbNbVot92Qq6WdYElL1rRtqJYt0verla4pLbEzXqhtoKLiotiUxS85FXOl7Jr9-tW8qIua6zYktOASudxQ-TWHRbK-4m2hajrdbHQ2JL2b4-e20ZU1k4Hz5ZcKx_8x72ggk7P4_lVS49atUv6PTmFWv13rkMKMD-A7_NxWdWUiMXk9LYPYUwvgbhn4v6gQj-1ubQDE_cx7vzJRmf_IRmYuE--PRP3M_-Xrfg_AAD__yeAXOc">