Tanya Lattner | 28 Jul 20:29 2015

[IMPORTANT] Mailing list Move & Downtime (Tuesday, August 4th)

On August 4th (~9AM PDT, exact time TBD), all LLVM related mailing lists will move to a new mailing list server and will change to listname <at> lists.llvm.org. LLVMDev will probably change to LLVM-Dev to preserve consistency.

This means a couple of things:
1) All mailing lists will be down on August 4th. We anticipated at least the full day of downtime (hopefully less if things go well).
2) SVN access will be read only 
3) Bugzilla will not be available

I will send a reminder 3 days before, 1 day before, and the day of. Please be sure to update any email filters you have. The mailing lists will continue to be mailman lists and all subscribers will be transferred to the new server. There is no need to re-sign up for lists. The old lists will reject mail once the move begins. Our goal is to transfer all existing archives as well.

The mailing lists are currently hosted at the University of Illinois and we want to thank them for their longtime support. UIUC has planned to move all its lists to a new campus mail server, and we have wanted to change the domain name for our lists, so this was a good time to make the change.

If you have any questions or comments, please make sure to CC me on your response.

Thank you,
Tanya Lattner
LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Martell Malone | 28 Jul 19:42 2015

Request: Changing commit message in llvm trunk


I'm trying to change a commit message that became malformed when pushing to trunk

svn propedit svn:log --revprop -r 243434
svn: E175002: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: E175002: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook

As described here commit messages are not versioned on svn
Would it be possible to get a hook made for this

It could be very useful for 3 reason.

Currently if someone makes a commit and does not have it is not automatically closed by phabracator by adding
Differential Revision: http://reviews.llvm.org/DXXXXX
at the end of their commit
The committer then often has to go back and manually enter a message to tell someone that their patch has landed

With a hook for this it would be easy to update the message invoking phabracator to now close the revision as it has landed.

we could even quite easily create a script for this for any committer to use to speed up the process, example here is a script called landed

landed D11511 r243434

If a patch is reverted at some point because it is broken.
It would be nice to be able to edit the commit message in rXXX to tell the reader that the commit was reverted in rYYY and reapplied with a fix in rZZZ

If you have a pesky typo in your commit like I have :)

I'm sure the hook could be made so that only an author can edit their own commit message or an admin that can.

Kind Regards

LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Sumanth Gundapaneni | 28 Jul 18:52 2015

[ARM]__modsi3 call in android


     I see there is an inconsistency in LLVM libc calls.


For a modulo (reminder) operation,

clang –target arm-none-linux-gnueabi generates “__modsi3”.

clang –target arm-none-eabi generates “__aeabi_idivmod”

clang –target arm-linux-androideabi generates “__modsi3”


Android bionic libc doesn’t provide a __modsi3, instead it provides “__aeabi_idivmod”.

I wonder why no one has seen this issue so far. Is this a known bug ?

If so, can I move head and push a custom lowering for SREM and UREM when targeted for Android?


--Sumanth G

LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
bill rowe | 28 Jul 17:36 2015

llvmbuild.txt and cmakelists.txt

I've been experimenting with building various llvm variants on mac OS X.

Ususally, it's a case of cloning, running cmake with Xcode as generator and loading the resulting xcodeproj.

In trying to build the skeleton openrisc backend from https://github.com/asl/llvm-openrisc 
as described in "building a backend in 24 hours" at http://llvm.org/devmtg/2012-04-12/Slides/Workshops/Anton_Korobeynikov.pdfI find there are no cmakelists but there are llvmbuild.txt's.  Is the llvmbuild somehow used to generate the cmakelists?

The presentation and repository are several years old, has the build system changed that much?
LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Jun Koi | 28 Jul 18:17 2015

Wrong encoding/decoding for POPC instruction of Sparc


There is an issue in the latest Sparc code: while we can encode POPC, decode results in crash in llvm-mc

$ echo "popc %g1, %g2" | ./Release+Asserts/bin/llvm-mc -assemble -triple=sparcv9 -show-encoding
    popc %g1, %g2                   ! encoding: [0x85,0x70,0x00,0x01]

$ echo "0x85,0x70,0x00,0x01"|./Release+Asserts/bin/llvm-mc -disassemble -triple=sparcv9
    popc Assertion failed: (idx < size()), function operator[], file /Users/jun/projects/llvm/sparc-2.git/include/llvm/ADT/SmallVector.h, line 143.
0  llvm-mc                  0x00000001096a5099 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 57
1  llvm-mc                  0x00000001096a45c6 llvm::sys::RunSignalHandlers() + 102
2  llvm-mc                  0x00000001096a5b95 SignalHandler(int) + 693
3  libsystem_platform.dylib 0x00007fff86d78f1a _sigtramp + 26
4  libsystem_platform.dylib 0x0000000000000002 _sigtramp + 2032693506
5  llvm-mc                  0x00000001096a5836 abort + 22
6  llvm-mc                  0x00000001096a5811 __assert_rtn + 81
7  llvm-mc                  0x000000010963f4e8 llvm::SparcInstPrinter::printOperand(llvm::MCInst const*, int, llvm::MCSubtargetInfo const&, llvm::raw_ostream&) + 136
8  llvm-mc                  0x000000010963eae0 llvm::SparcInstPrinter::printInstruction(llvm::MCInst const*, llvm::MCSubtargetInfo const&, llvm::raw_ostream&) + 256
9  llvm-mc                  0x000000010964f5e6 llvm::SparcInstPrinter::printInst(llvm::MCInst const*, llvm::raw_ostream&, llvm::StringRef, llvm::MCSubtargetInfo const&) + 86
10 llvm-mc                  0x000000010965f90f (anonymous namespace)::MCAsmStreamer::EmitInstruction(llvm::MCInst const&, llvm::MCSubtargetInfo const&) + 2879
11 llvm-mc                  0x00000001096043b3 llvm::Disassembler::disassemble(llvm::Target const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, llvm::MCSubtargetInfo&, llvm::MCStreamer&, llvm::MemoryBuffer&, llvm::SourceMgr&, llvm::raw_ostream&) + 2147
12 llvm-mc                  0x0000000109607460 main + 9760
13 libdyld.dylib            0x00007fff8f34d5c9 start + 1
14 libdyld.dylib            0x0000000000000003 start + 1892362811
Stack dump:
0.    Program arguments: ./Release+Asserts/bin/llvm-mc -disassemble -triple=sparcv9
Illegal instruction: 4

Any ideas on what is wrong, and how to fix this?

Thank you.
LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Mehdi Amini | 28 Jul 16:58 2015

Notice for out-of-tree maintainer: RegisterScheduler::setDefault removed

Hi all,

Just a notice for out-of-tree maintainer, I removed RegisterScheduler::setDefault in r243388. It was used to override the default command line option that selects the DAG scheduler to use. 

Instead of hacking into the command line plumbing, a target that wants more control over the selection of the scheduler than it already has with setSchedulingPreference has a SubTargetHook “getDAGScheduler” that can be overridden. The original motivation for this change was to remove some mutable global state.


LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Martell Malone | 28 Jul 16:32 2015

Regression testing on MSYS2 host with mingw-w64

Hi Yaron,

I know you sent me some emails before about regression testing on MSYS2
So you might have some idea about this

I am getting a regression error on check-llvm.
With the llvm/trunk/test/ExecutionEngine/Interpreter/intrinsics.ll

FAIL: LLVM :: ExecutionEngine/Interpreter/intrinsics.ll (7635 of 14266)
******************** TEST 'LLVM :: ExecutionEngine/Interpreter/intrinsics.ll' FAILED ********************
C:/msys64/home/Martell/llvmbuild/./bin/lli.EXE -O0 -force-interpreter < C:/msys64/home/Martell/llvm/test/ExecutionEngine/Interpreter/intrinsics.ll
Exit Code: 1

Command Output (stdout):
Command 0: "C:/msys64/home/Martell/llvmbuild/./bin/lli.EXE" "-O0" "-force-interpreter"
Command 0 Result: 1
Command 0 Output:

Command 0 Stderr:
LLVM ERROR: Tried to execute an unknown external function: truncf

the same failure happens for trunc, round and copysign.

Commenting out these declarations and calls result in a successful make-check.

-- Testing: 14266 tests, 8 threads --
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
Testing Time: 83.21s
  Expected Passes    : 10267
  Expected Failures  : 49
  Unsupported Tests  : 3950
[100%] Built target check-llvm

Have you any idea on how to fix this

Many Thanks
LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Martell Malone | 28 Jul 15:44 2015


That's how I read it. :)

Adding a little to the topic what criteria would we need to make a target use compiler-rt and libc++ as the default in the clang driver.
I have successfully built a standalone clang toolchain with mingw-w64 without using gcc or binutils.
Currently I locally patch this to be the default.

On Tue, Jul 28, 2015 at 2:33 PM, Renato Golin <renato.golin <at> linaro.org> wrote:
On 28 July 2015 at 14:14, Martell Malone <martellmalone <at> gmail.com> wrote:
> Meant to say more likely correct. :)

That's how I read it. :)


LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Andrew Zhogin | 28 Jul 15:13 2015

AliasSetTracker and UnknownInst's (callsites mostly) problem

Hi all,

There is a problem about how AliasSetTracker merging AliasSet's when meet UnknownInst.

When adding new pointer it looks for existing AliasSet's aliased with new pointer. And merging them together. It is ok for pointers: if %A mayalias %B and %B mayalias %C then %A mayalias %C.

But the same logic when adding callsite is wrong (findAliasSetForUnknownInst).

Callsite may be known to readonly access one pointer and change the content of other pointer.
Why to merge together two noalias pointers if they have some mod/ref relationships with common callsite?

If modrefinfo(%A, %call1) == REF and modrefinfo(%B, %call1) == MOD
it doesn't mean %A may/must alias %B.
AliasSet's for %A and %B must stay independent with corrected access lattice: aliasset(%A).Access |= RefAccess, aliasset(%B).Access |= ModAccess.
And I think new UnknownInst must be added to both AliasSet's.

Or maybe UnknownInst's must be collected in central part - AliasSetTracker, not AliasSet's.

Am I right?

Best regards,
Andrew Zhogin

LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
marwayusuf@feng.bu.edu.eg | 28 Jul 14:34 2015

getting memory data from a value object

Dear All,

Heare is another (maybe basic) question.

If, at runtime of the analyzed application, I have a reference to a value object. Is there is a way to extract real data stored in memory related to that object?


int x = 5;

I have the reference representing x, how can I get "5" from memory?

Marwa Yusuf
Teaching Assistant - Computer Engineering Department
Faculty of Engineering - Benha University
E-JUST PhD Student
Computer Science & Engineering Dept.
LLVM Developers mailing list
LLVMdev <at> cs.uiuc.edu         http://llvm.cs.uiuc.edu
Schlottke-Lakemper, Michael | 28 Jul 13:10 2015



I am wondering about the meaning of the cmake flags LLVM_ENABLE_LIBCXX and LLVM_ENABLE_LIBCXXABI. Are
they used to indicate that if the C/C++ compiler for building LLVM is clang, and if this clang has support
for libc++ with libc++Abi, that both lib++ and libc++abi should be used (instead of linking to the
default, which at least on Linux is libstdc++)? If not, what is the canonical way of building LLVM with
libc++? I am asking since I seem to have problems linking libLLVMSupport.a to a program while using clang
with libc++, whereas the used clang/LLVM compiler was originally built with clang and libstdc++. 

Related to the first question: do the above flags also make clang use libc++ by default, or is this
configurable via a different set of flags? 

Thanks a lot in advance 


Michael Schlottke-Lakemper

SimLab Highly Scalable Fluids & Solids Engineering
Jülich Aachen Research Alliance (JARA-HPC)
RWTH Aachen University

Wüllnerstraße 5a
52062 Aachen

Phone: +49 (241) 80 95188
Fax: +49 (241) 80 92257
Mail: m.schlottke-lakemper <at> aia.rwth-aachen.de
Web: http://www.jara.org/jara-hpc