Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] VTable Method Index"
2012 Apr 21
4
[LLVMdev] Remove function from module
Thanks, but I replaceAllUsesWith() - works well, but I still get bug in eraseFromParent():
While deleting: i32 (%class.B*, i32)* %_ZN1B1xEi
An asserting value handle still pointed to this value!
UNREACHABLE executed at /Users/neonomaly/LLVM/LLVM/lib/VMCore/Value.cpp:561!
Yours sincerely,
Kadysev Mikhail
21.04.2012, в 23:45, Nick Lewycky написал(а):
> Михаил wrote:
>> How correctly
2012 Apr 22
2
[LLVMdev] Remove function from module
It is ModulePass with AnalysisUsage of CallGraph
Yours sincerely,
Kadysev Mikhail
22.04.2012, в 5:20, Nick Lewycky написал(а):
> Михаил wrote:
>> Thanks, but I replaceAllUsesWith() - works well, but I still get bug in
>> eraseFromParent():
>>
>> While deleting: i32 (%class.B*, i32)* %_ZN1B1xEi
>> An asserting value handle still pointed to this value!
>>
2012 Apr 22
0
[LLVMdev] Remove function from module
Михаил wrote:
> It is ModulePass with AnalysisUsage of CallGraph
Ah, then you'll need to update the CallGraph first. Use
"CG.removeFunctionFromModule(F);" before deleting it.
Nick
> Yours sincerely,
> Kadysev Mikhail
>
> 22.04.2012, в 5:20, Nick Lewycky написал(а):
>
>> Михаил wrote:
>>> Thanks, but I replaceAllUsesWith() - works well, but I still
2012 Apr 22
0
[LLVMdev] Remove function from module
Михаил wrote:
> Thanks, but I replaceAllUsesWith() - works well, but I still get bug in
> eraseFromParent():
>
> While deleting: i32 (%class.B*, i32)* %_ZN1B1xEi
> An asserting value handle still pointed to this value!
> UNREACHABLE executed at /Users/neonomaly/LLVM/LLVM/lib/VMCore/Value.cpp:561!
The replaceAllUsesWith + eraseFromParent pattern remains correct, but
there's
2012 Apr 21
3
[LLVMdev] Remove function from module
How correctly remove function from module?
For example:
int f1(int x) {
...
a = f2(smth);
...
}
int f2 (int y) {
...
b = f1(smth);
...
}
I need delete from module both f1 and f2. They haven't uses in other part of module, but I can't delete them with eraseFromParent, because they are use each other.
Yours sincerely,
Kadysev Mikhail
-------------- next part
2012 Apr 21
0
[LLVMdev] Remove function from module
It also occurs on several (different) test cases. I have founded that assershion rises in void ValueHandleBase::ValueIsDeleted(Value *V);
Code from function:
// All callbacks, weak references, and assertingVHs should be dropped by now.
if (V->HasValueHandle) {
#ifndef NDEBUG // Only in +Asserts mode...
dbgs() << "While deleting: " << *V->getType()
2012 Feb 09
1
[LLVMdev] Need Help with StructType inheritance
Hi.
I have such task: to get information about classes of work program (module) form Module (LLVM class), for example in ModulePass. I tried to analyze source code of LLVM architecture related with Module class, but I have not founded any useful information. Thanks!
Yours sincerely,
Kadysev Mikhail
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2012 May 04
2
[LLVMdev] StructTypes into one
Is it possible to merge StructTypes with different names like:
%"class.std::allocator.4" = type { i8 }
%"class.__gnu_cxx::new_allocator.5" = type { i8 }
%"class.std::allocator.0" = type { i8 }
%"class.__gnu_cxx::new_allocator.1" = type { i8 }
%"class.std::allocator.0.6" = type { i8 }
merge into
%"class.__gnu_cxx::new_allocator" = type
2019 Apr 19
2
Question: How to access c++ vtable pointer to use as Value* in LLVM pass
Dear Mailing List,
This might sound unconventional, but I am trying to access a C++
objects vtable to pass as an argument to a function call for a library
function I created. Creating & inserting a function call at the
correct location in LLVM is done.
I have learned that C++ objects are represented as struct types. But
I'm just not quite sure how to get at the vtable pointer within,
2012 Mar 02
1
[LLVMdev] IR + Module Pass
Hi.
Can I know that in Module *M Function* F is a method of StructType *st? Also can I know that in this StructType the F has mark "virtual"?
Thanks!
Yours sincerely,
Kadysev Mikhail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120302/5c77c3ee/attachment.html>
2016 Jan 28
2
Proposal: virtual constant propagation
Hi Peter,
Thanks for your answer!
> On Jan 28, 2016, at 10:17 AM, Peter Collingbourne <peter at pcc.me.uk> wrote:
>
> Hans wrote:
>> (and start-up time if we can drop the vtables and
>> void the dynamic relocations).
>
> On Thu, Jan 28, 2016 at 09:15:05AM -0800, Mehdi Amini wrote:
>> Hi,
>>
>> I just thought about another use case: VTable
2012 Feb 11
1
[LLVMdev] Clang passes
Hi.
I've tried to search the way to write a pass for clang like a pass for opt, but I haven't find it. Is it possible?
I need to save class inheritance of the program being processed to external file.
Thanks!
Yours sincerely,
Kadysev Mikhail
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2012 Apr 21
0
[LLVMdev] Remove function from module
Михаил wrote:
> How correctly remove function from module?
> For example:
>
> int f1(int x) {
> ...
> a = f2(smth);
> ...
> }
> int f2 (int y) {
> ...
> b = f1(smth);
> ...
> }
>
> I need delete from module both f1 and f2. They haven't uses in other
> part of module, but I can't delete them with eraseFromParent, because
> they are use each
2012 Apr 01
1
[LLVMdev] Create Instruction
Hi!
I've have Instruction in my code:
...
%call6 = call i32 %9(%class.A* %call3, i32 2)
...
And I want to get something like this:
...
%11 = icmp eq i32 (%class.D*, i32)* %10, @_ZThn4_N1D1xEi
br i1 %11, label %12, label %14
; <label>:12 ; preds = %7
%13 = bitcast %class.A* %call3 to %class.D*
%call64 = call i32
2012 Apr 19
1
[LLVMdev] Switch + Addresses of functions
Is it possible to use address of function in case block of switch instruction? I understand that it should be constants only, but in llvm reference i founded that: "The addresses of global variables and functions are always implicitly valid (link-time) constants. "
Yours sincerely,
Kadysev Mikhail
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2012 Mar 06
2
[LLVMdev] Work with CallSites
Hi.
I have a test program:
class A {
int A;
public:
virtual void test ( int x ) = 0;
};
class B : public A {
int B;
public:
void test ( int x ) {};
};
int main() {
A *a = new B();
a->test(1);
}
We have call site CS: "a->test(1);". CS.getCalledFunction() - return NULL, so we can say that this call site is virtual. My optimization determines, that in this call site
2013 May 10
0
[LLVMdev] [cfe-dev] "load groups" IR feature to improve C++ devirtualization
On May 9, 2013, at 9:22 PM, Nick Lewycky <nlewycky at google.com> wrote:
> On 9 May 2013 19:13, John McCall <rjmccall at apple.com> wrote:
> This is not how I understand the [basic.life] rules. The question is whether a pointer value, reference, or name is formally forwarded to point to the new object. Because the dynamic type is different, the pointer value held in 'p'
2012 May 04
0
[LLVMdev] StructTypes into one
Hi Михаил,
> Is it possible to merge StructTypes with different names like:
>
> %"class.std::allocator.4" = type { i8 }
> %"class.__gnu_cxx::new_allocator.5" = type { i8 }
> %"class.std::allocator.0" = type { i8 }
> %"class.__gnu_cxx::new_allocator.1" = type { i8 }
> %"class.std::allocator.0.6" = type { i8 }
>
> merge
2013 May 10
4
[LLVMdev] [cfe-dev] "load groups" IR feature to improve C++ devirtualization
On 9 May 2013 19:13, John McCall <rjmccall at apple.com> wrote:
> On May 9, 2013, at 6:34 PM, Nick Lewycky <nlewycky at google.com> wrote:
> > I'm looking into how we can improve devirtualization in clang, and there
> a language in C++ feature I'd like to take advantage of which would let us
> perform elimination of more vptr loads. In this code:
> >
>
2012 May 04
1
[LLVMdev] StructTypes into one
I have such problem with linking represented files.... llvm-link 1.bc 2.bc
-o 3.bc
2012/5/4 Duncan Sands <baldrick at free.fr>
> Hi Михаил,
>
> > Is it possible to merge StructTypes with different names like:
> >
> > %"class.std::allocator.4" = type { i8 }
> > %"class.__gnu_cxx::new_allocator.5" = type { i8 }
> >