Displaying 20 results from an estimated 9000 matches similar to: "Extracting the !dbg property from LLVM IR function calls"
2020 Apr 08
3
Building libjpeg-turbo with LTO
Hi,
I have tried to build libjpeg-turbo
<https://github.com/libjpeg-turbo/libjpeg-turbo> with LTO in LLVM, using
both clangbut get many errors in lld that look like the following:
ld: error: undefined symbol: jpeg_std_error
>>> referenced by jcstest.c:76
>>> lto.tmp:(main)
ld: error: undefined symbol: jpeg_CreateCompress
>>> referenced by
2020 Jun 09
3
Preventing function call from being optimized out in LTO
Hi David,
Sure! Here's a function in sqlite3 called verifyDbFile, compiled with -O3.
This is what it looks like when the intermediate bitcode is emitted by
clang: link <https://pastebin.com/L3PrK1ac>
And here's what happens after I run opt -O3 (no additional command-line
arguments) on the file containing this function: link
<https://pastebin.com/rZHBm2iU>.
I'm not 100%
2020 Jun 09
3
Preventing function call from being optimized out in LTO
Hi David,
By "dead" do you mean unreachable? My understanding was that the removal of
dead code is simply another optimization, which should be disabled after
adding "optnone" (and adding the function to llvm.used so the function
doesn't later get deleted entirely).
I am instrumenting certain basic blocks in an LLVM pass, and would like to
compile a binary which
2020 Apr 09
3
Building libjpeg-turbo with LTO
Adding a couple of lld folks.
I helped Shishir debug this, the link line looked like:
/home/sjessu/build/bin/clang -O0 -flto -o jcstest jcstest.o
./.libs/libjpeg.a
and the issue was that libjpeg.a was created with the system ar instead of
llvm-ar. It worked when recreating libjpeg.a with llvm-ar.
I noticed that the lld code has some special handling for the case
when there is a missing
2020 Jun 09
5
Preventing function call from being optimized out in LTO
Hello,
I am adding function calls to an LLVM link-time optimization (LTO) pass,
using the IRBuilder::CreateCall method. I want these calls to remain in the
final x86 binary at any optimization level, but on levels -O2 and -O3, some
of these calls are being optimized out.
So far, I've tried adding each function in the program (excluding LLVM
intrinsics) to the llvm.used set, and I've also
2020 Mar 16
2
Passing arguments to LLVM pass through Clang
Hello,
I am adding to an LLVM pass that requires a filename as input. I am able to
input this filename as a command line argument when I invoke this pass
using opt, but I ultimately need to pass this argument to my code when I
compile code with clang.
How can I pass this argument to clang so that I can use it in my LLVM pass?
Thanks for your help!
Best,
Shishir Jessu
-------------- next part
2019 Sep 30
3
Debugging LowerTypeTests in LLVM Using GDB
Hi,
I am looking into Control-Flow Integrity for indirect function calls,
implemented with jump tables. I want to step through the code that produces
these jump tables in GDB. I have built clang and opt from source with
debugging symbols. I believe this code lives in
llvm/lib/Transforms/LowerTypeTests.cpp, but when I try to debug *opt* by
running the command "run -lowertypetests cfi-icall.bc
2020 Apr 30
2
Discrepancy between Debug and Release+Asserts versions of Clang/LLVM
I agree that the ArrayRef is likely the issue. I've debugged a crash caused
by a temporary ArrayRef like that a couple times.
Either do what David suggested or use a normal array:
Metadata *mdArray[] = {ConstantInt::get(Int64Ty, 0), newMD};
~Craig
On Thu, Apr 30, 2020 at 9:56 AM David Blaikie via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
>
>
> On Thu, Apr 30, 2020 at
2019 Jul 03
2
optimisation issue in an llvm IR pass
Hello,
I have an optimisation issue in an llvm IR pass - the issue being that
unnecessary instructions are generated in the final assembly (with -O3).
I want to create the following assembly snippet:
mov dl,BYTE PTR [rsi+rdi*1]
add dl,0x1
adc dl,0x0
mov BYTE PTR [rsi+rdi*1],dl
however what is created is (variant #1):
mov dl,BYTE PTR [rsi+rdx*1]
add dl,0x1
cmp
2019 Jul 03
3
optimisation issue in an llvm IR pass
Hi Craig,
On 03.07.19 17:33, Craig Topper wrote:
> Don't the CreateICmp calls return a Value* with an i1 type? But then
> they are added to an i8 type? Not sure that works.
I had that initially:
auto cf = IRB.CreateICmpULT(Incr, ConstantInt::get(Int8Ty, 1));
auto carry = IRB.CreateZExt(cf, Int8Ty);
Incr = IRB.CreateAdd(Incr, carry);
it makes no difference to the generated assembly
2014 Jan 24
2
[LLVMdev] How to read v3.3 dbg metadata using v3.4 LLVM
Thanks Eric, but could you give me a little bit more hints or pointers
please? I looked into DebugInfo.h, but I'm still not sure how to start. It
sounds like I'd have to somehow manually extract metadata nodes from an
instruction.
Thanks,
JS
On Wed, Jan 22, 2014 at 10:14 PM, Eric Christopher <echristo at gmail.com>wrote:
> This is likely going to be difficult if possible. I
2019 Dec 03
2
Using different opt with clang
Hi,
I have made some changes in the LowerTypeTests Pass of opt, and would like
to use these changes with the clang version I have downloaded.
I compiled clang and llvm from scratch, made my changes in
LowerTypeTests.cpp, and recompiled clang and opt. When I run clang with the
appropriate flags to invoke the pass, it invokes the pass as originally
written, but when I run opt on the relevant
2017 Jun 09
2
Get segfault with ModulePass
Hi,
don't know if this is the right list. Please post a better place,
otherwise.
I'm currently writing a LLVM ModulePass and ran into strange segfaults or
endless loops within LLVM. My main question is, if this is a programming error
or API misuse from me or a LLVM bug?
Here is some minimal code, that triggers the bug:
----------------
class DebugPass : public ModulePass {
public:
2020 Apr 30
2
Discrepancy between Debug and Release+Asserts versions of Clang/LLVM
Hello,
I am editing the LowerTypeTests pass in LLVM, and part of my additions
include the following 3 lines of code:
// newTypeName is a std::string
MDString* newMD = MDString::get(M.getContext(), newTypeName);
ArrayRef<Metadata*> mdArray {ConstantInt::get(Int64Ty, 0), newMD};
auto* node = MDTuple::get(M.getContext(), mdArray);
Thus far, I have been developing on a version of Clang with
2018 Sep 19
2
Obtaining the origin function for a local var after inlining
On Tue, Sep 18, 2018 at 1:56 AM Adrian Prantl <aprantl at apple.com> wrote:
>
>
>
> > On Sep 17, 2018, at 6:59 AM, Alexander Potapenko via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> >
> > (I think I've asked a similar question off-list a couple of times, but
> > never got an answer)
> >
> > Hi folks,
> >
> > For [K]MSAN
2018 Sep 17
3
Obtaining the origin function for a local var after inlining
(I think I've asked a similar question off-list a couple of times, but
never got an answer)
Hi folks,
For [K]MSAN we need to figure out which inlined function a local var
originally belonged to in the source file.
E.g. when a local buffer %buf is declared in @bar(), but @bar() is
inlined into @foo(), then there's a local %buf.i in @foo(), but we
need to determine that the local came from
2018 Feb 05
1
Debug info error on bitcode inline modification
> Every inlinable call in a function that has debug info
(F->getSubprogram() returns non-null) must have a DebugLoc associated with
it that has a scope chain that ends in that same DISubprogram.
Thank you for the comment! I don't know if this is a proper way to fix, but
after I add DebugLoc same as inserting position instruction, no error
occurs.
2011 Oct 17
2
[LLVMdev] Variable name from metadata
Hi All,
Can we extract name of variable name from "MDNode" ?
1. Neither temp_MDNode->getName() nor temp_MDNode->getValueName() give me "global_int" which is name of a variable.
2. I tried below ways as well.
DIVariable DV(mdnode1);
Value *v = mdnode1->getOperand(0);//gives add 0x69
3. I have written below code to reach till variable name.
LLVMIname is
2018 Sep 25
1
Obtaining the origin function for a local var after inlining
On Wed, Sep 19, 2018 at 5:18 PM Adrian Prantl <aprantl at apple.com> wrote:
>
>
>
> > On Sep 19, 2018, at 4:08 AM, Alexander Potapenko <glider at google.com> wrote:
> >
> > On Tue, Sep 18, 2018 at 1:56 AM Adrian Prantl <aprantl at apple.com> wrote:
> >>
> >>
> >>
> >>> On Sep 17, 2018, at 6:59 AM, Alexander
2018 Feb 02
2
Debug info error on bitcode inline modification
Hi,
I'm trying to inline function defined in another bitcode module via bitcode
modification.
I'm linking multiple bitcode modules, setting inline related attributes,
applying -always-inline pass, but then debug info error occurs.
It seems debug info metadata isn't properly updated on inlining. How can I
fix it?
I'm using LLVM 3.8.1 on OS X (On below example target is Android but