<div dir="ltr"><div>Please refer to <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1823">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1823</a>.<br><br></div>-- HT<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 21, 2017 at 9:02 PM, Sameer AbuAsal via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><div link="#0563C1" vlink="#954F72" lang="EN-US"><div class="m_8229094805249850267WordSection1"><p class="MsoNormal">Hi, <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I came across this behavior irregularity in LLVM for ARM backend  (-target arm-linux-gnueabi) with the constant promotion optimization in arm (-arm-promote-constant=true). <u></u><u></u></p><p class="MsoNormal">For the attached source files compiling with the following:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">clang++  -target arm-linux-gnueabi A.cpp B.cpp –o a.out<u></u><u></u></p><p class="MsoNormal">The addresses returned from bar() and foo() are not the same (string literals live in different memory locations) however, when we turn off the constant pool optimization<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">clang-arm-x++ -Ofast -mllvm -arm-promote-constant=false   A.cpp B.cpp -o test_case.exe –o a.out <u></u><u></u></p><p class="MsoNormal">we are getting the same addresses for string literals.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Looking into the ll files , the strings are created as  “private unnamed_addr constant” so the constant pool optimization pass is promoting them to constant pools and causing them to have different addresses, which seems fine.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Is this behavior in line with the C++ standard for strings in extern inline functions? If not, what should be the correct linkage type emitted for this constant? Is this a potential clang bug?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Thank you,<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div><br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>