<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Ooops, my apologies for that question. my target, like MSP430 has 16-bit ints,<div class="">but unlike MSP430, does not support 32-bit ints at all, so the actual crash</div><div class="">is in the call to __builtin_frame_address(0) which expects i32, but is being</div><div class="">passed i16 because that’s all my target supports.</div><div class=""><br class=""></div><div class="">If I change clang so that __builtin_frame_address / __builtin_return_address</div><div class="">take “native” size ints rather than being hard wired to i32</div><div class="">is that the sort of thing that a patch would be accepted for ?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">TIA,</div><div class="">Peter Lawrence.</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 23, 2017, at 11:04 AM, Peter Lawrence <<a href="mailto:peterl95124@sbcglobal.net" class="">peterl95124@sbcglobal.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I have a simulator for a target machine that I wrote an llvm port for<div class="">The simulator detects a return to address zero as returning from “main"</div><div class="">and that ends the simulation, with main's return value then being printed out</div><div class="">(and finally returned from the simulator to the shell).</div><div class=""><br class=""></div><div class="">I tried to implement “exit” in C rather than in assembly with the following</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">void * __builtin_frame_address (unsigned int level);</span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255); min-height: 21px;" class=""><br class=""><span style="font-variant-ligatures: no-common-ligatures" class=""></span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">int exit (int X)</span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">{</span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>((int*)__builtin_frame_address(0))[1] = 0; // simulator termination magic</div><div style="margin: 0px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>return X; // put result code in R0, as though returning X from main</span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class="">}</div></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div><div class=""><br class=""></div><div class="">After some warnings about redeclaration and about noreturn</div><div class="">clang crashes with an assert,</div><div class=""><br class=""></div><div class="">So my question is, isn’t the clang assertion too conservative ?</div><div class="">Why crash after warnings, why not let it go through ?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">TIA,</div><div class="">Peter Lawrence.</div><div class=""><br class=""></div><div class=""><br class=""></div></div></div></blockquote></div><br class=""></div></body></html>