<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7653.38">
<TITLE>RE: [llvm-commits] [llvm] r66870 - in /llvm/trunk/lib/CodeGen: RegAllocLinearScan.cpp RegAllocPBQP.cpp VirtRegMap.cpp VirtRegMap.h</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Looks like this breaks PBQP (at least for PIC16).<BR>
<BR>
llc: /home/i00171/projects/c16/include/llvm/PassAnalysisSupport.h:199: AnalysisType& llvm::Pass::getAnalysisID(const llvm::PassInfo*) const [with AnalysisType = llvm::VirtRegMap]: Assertion `ResultPass && "getAnalysis*() called on an analysis that was not " "'required' by pass!"' failed.<BR>
0   llc       0x087e2206<BR>
1   llc       0x087e27ef<BR>
2   libc.so.6 0x0015b0d8<BR>
3   libc.so.6 0x0015c705 abort + 469<BR>
4   libc.so.6 0x00154619<BR>
5   llc       0x0858c766 llvm::VirtRegMap& llvm::Pass::getAnalysisID<llvm::VirtRegMap>(llvm::PassInfo const*) const + 190<BR>
6   llc       0x0858c83e llvm::VirtRegMap& llvm::Pass::getAnalysis<llvm::VirtRegMap>() const + 90<BR>
7   llc       0x08593fd0<BR>
8   llc       0x083837be llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 52<BR>
9   llc       0x0876145d llvm::FPPassManager::runOnFunction(llvm::Function&) + 289<BR>
10  llc       0x087619ee llvm::FunctionPassManagerImpl::run(llvm::Function&) + 124<BR>
11  llc       0x08761b77 llvm::FunctionPassManager::run(llvm::Function&) + 159<BR>
12  llc       0x0833e099 main + 2673<BR>
13  libc.so.6 0x0014879a __libc_start_main + 218<BR>
14  llc       0x0833c2d1 dlopen + 65<BR>
Stack dump:<BR>
0.      Program arguments: llc -regalloc=pbqp -f -march=pic16 direct_load_char.bc<BR>
1.      Running pass 'PBQP Register Allocator' on function '@main'<BR>
<BR>
<BR>
The test case is<BR>
<BR>
; ModuleID = 'direct_load_char.c'<BR>
target datalayout = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8"<BR>
target triple = "pic16-pc-linux-gnu"<BR>
        %struct.__block_descriptor = type { i32, i32 }<BR>
        %struct.__block_literal_generic = type { i8*, i16, i16, i8*, %struct.__block_descriptor* }<BR>
@ptr = global i8* inttoptr (i64 160 to i8*), align 1            ; <i8**> [#uses=1]<BR>
@i = common global i8 0, align 1                ; <i8*> [#uses=2]<BR>
@k = common global i8 0, align 1                ; <i8*> [#uses=2]<BR>
@j = global i8 1, align 1               ; <i8*> [#uses=3]<BR>
<BR>
define void @main() nounwind {<BR>
entry:<BR>
        %tmp = load i8* @j              ; <i8> [#uses=1]<BR>
        store i8 %tmp, i8* @i<BR>
        %tmp1 = load i8* @i             ; <i8> [#uses=1]<BR>
        store i8 %tmp1, i8* @k<BR>
        %tmp2 = load i8* @k             ; <i8> [#uses=1]<BR>
        store i8 %tmp2, i8* @j<BR>
        %tmp3 = load i8** @ptr          ; <i8*> [#uses=1]<BR>
        %tmp4 = load i8* @j             ; <i8> [#uses=1]<BR>
        store i8 %tmp4, i8* %tmp3<BR>
        ret void<BR>
}<BR>
<BR>
<BR>
- Sanjiv<BR>
<BR>
-----Original Message-----<BR>
From: llvm-commits-bounces@cs.uiuc.edu on behalf of Owen Anderson<BR>
Sent: Fri 3/13/2009 11:25 AM<BR>
To: llvm-commits@cs.uiuc.edu<BR>
Subject: [llvm-commits] [llvm] r66870 - in /llvm/trunk/lib/CodeGen: RegAllocLinearScan.cpp RegAllocPBQP.cpp VirtRegMap.cpp VirtRegMap.h<BR>
<BR>
Author: resistor<BR>
Date: Fri Mar 13 00:55:11 2009<BR>
New Revision: 66870<BR>
<BR>
URL: <A HREF="http://llvm.org/viewvc/llvm-project?rev=66870&view=rev">http://llvm.org/viewvc/llvm-project?rev=66870&view=rev</A><BR>
Log:<BR>
Convert VirtRegMap to a MachineFunctionPass.<BR>
<BR>
Modified:<BR>
    llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp<BR>
    llvm/trunk/lib/CodeGen/RegAllocPBQP.cpp<BR>
    llvm/trunk/lib/CodeGen/VirtRegMap.cpp<BR>
    llvm/trunk/lib/CodeGen/VirtRegMap.h<BR>
<BR>
Modified: llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp<BR>
URL: <A HREF="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp?rev=66870&r1=66869&r2=66870&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp?rev=66870&r1=66869&r2=66870&view=diff</A><BR>
<BR>
<BR>
--- llvm/trunk/lib/CodeGen/RegAllocPBQP.cpp (original)<BR>
+++ llvm/trunk/lib/CodeGen/RegAllocPBQP.cpp Fri Mar 13 00:55:11 2009<BR>
@@ -799,8 +799,7 @@<BR>
   lss = &getAnalysis<LiveStacks>();<BR>
   loopInfo = &getAnalysis<MachineLoopInfo>();<BR>
<BR>
-  std::auto_ptr<VirtRegMap> vrmAutoPtr(new VirtRegMap(*mf));<BR>
-  vrm = vrmAutoPtr.get();<BR>
+  vrm = &getAnalysis<VirtRegMap>();<BR>
<BR>
   DOUT << "PBQP Register Allocating for " << mf->getFunction()->getName() << "\n";<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>