<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/65446>65446</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang for ARM produces char values larger than 8bit when assigned from float
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Stenzel
</td>
</tr>
</table>
<pre>
This only happens with optimizations, without optimizations all is fine.
This affects also functions that are inlined and take a char argument, a value exceeding the range of char, signed or unsigned, is passed as parameter.
See below the minimal program to reproduce.
Compile and run on M1 mac:
clang -O2 minimal.cpp -o minimal
./minimal
u:0x173C44
Compile & run without optimization:
clang minimal.cpp -o minimal
./minimal
u:0x44
Fault also shows in godbolt:
https://godbolt.org/z/ovMYv7qY6
[minimal.cpp.zip](https://github.com/llvm/llvm-project/files/12534450/minimal.cpp.zip)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVE1zmzAQ_TXishMGBNjmwMGxh1umM00vOS6wgFohUX3YiX99BxEnTseHlgNIu4_33mpZ0FoxKKKKFY-sOEbo3ahN9exIXUhGje7eqh-jsKCVfIMR55mUhbNwI-jZiUlc0AmtLOOHENXefU0ASgnCQi8UxSw5smQf-LDvqXVL2mrovWpXtBvRARoCoaRQ1AGqDhz-IkBoRzSAZvATKbcIIpxQegJ6bYk6oQZwI4FBNRDoPuAXWKiwA23Aq3W9RIWFGa1dJJaVwYkcmRhWj-v9mQgakvociCehxIQSZqMHgxM4DYZmozvf0tf3DnqahaRg3ngFWsFTChO2LNvf4lqJaoCHb_zKHbfzDA_6ul1RMeP1Vfv-teI8y_bJa7rNDnl-zw3jm-DmXp_uGvtXU7fyX6Vr9NKtPbajPlsQCgbdNVq6D8XRudkuO14zXr9nY20GxusL47U-Pb2ctr9fNrfErHi8cRdfxMyKI-O7v8iEG30Tt3pivJbydH08zEb_pNYxXvdCkmW8TnmR5XmRfJb1QczLVTPqqqwrsxIjqtJNmZW7PC3TaKz6rOdIXUK7rm23ZZsSIuZZ1vMy33ZpE4mKJzxLymSTbJOySOOet-mOaMcpz5tNlrI8oQmFjBd3S-2RsNZTtSnyfBNJbEjaMKKch9Ywzhk_MM4VnSFAl0hxjEwV6mv8YFmeSGGd_eR0wkmq1t722sD--xO8f792na4wTxYkmoHMMowKdo1wcB5Jwfu_ooPe6Al6qdFF3sjqv888GF4OPZT3JwAA__8FgHHJ">