Displaying 20 results from an estimated 2000 matches similar to: "How to call C function 'malloc' ?"
2015 Mar 25
2
[LLVMdev] Optimization puzzle...
Hi everyone,
I am wondering what¹s stopping the LLVM optimizer (opt -O3) from
eliminating the apparently useless « icmp sgt » instruction in the
following piece of LLVM IR.
> ; ModuleID = 'lambda-opt.bc'
> target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
> target triple = "x86_64-apple-macosx10.10.0"
>
> ; Function
2015 Mar 25
3
[LLVMdev] Optimization puzzle...
Here's a version that doesn't try to do block deletion on it's own. If you
use -adce then -simplifycfg, you get what you want.
It passes all tests except one, which is that we delete an invoke of a pure
function, IE Transforms/ADCE/dce_pure_invoke.ll -
I'm not sure why that's bad.
The reason we delete it is because it returns false to
I.mayHaveSideEffects(), and in particular,
2015 May 15
2
[LLVMdev] RFC: ThinLTO Impementation Plan
> On 2015-May-15, at 13:15, Teresa Johnson <tejohnson at google.com> wrote:
>
> What isn't clear to me is what all uses the available
> externally linkage type currently - do you happen to know?
It's used for the `inline` keyword in the C language. If you do a
`git grep available_externally -- test/` inside a clang checkout you
might find some other uses.
$ cat
2015 Aug 31
2
alloca combining, not (yet) possible ?
Hello
since my broad RFC request didn't catch any responses, let me get a bit
more into the nitty-gritty:
I tried to get llvm (3.7) to optimize superflous allocas away, but so
far I haven't figured out how. Is there no optimizer for this ? Should I
adorn something with some attributes ? As far as I can tell no, but I am
no llvm expert...
For what I want to do, i will probably have a
2015 Aug 31
2
alloca combining, not (yet) possible ?
Caldarale, Charles R schrieb:
> You have not provided us with the declaration for f(). Unless its argument is marked with the nocapture attribute, the compilation of g() cannot assume that f() has not retained a pointer to the x struct and is using it in the second call.
>
thanks a lot for the input. Yes, I forgot to that. The C function
declaration would have been
void f( struct a_b
2016 Feb 11
3
Expected constant simplification not happening
Hi
the appended IR code does not optimize to my liking :)
this is the interesting part in x86_64, that got produced via clang -Os:
---
movq -16(%r12), %rax
movl -4(%rax), %ecx
andl $2298949, %ecx ## imm = 0x231445
cmpq $2298949, (%rax,%rcx) ## imm = 0x231445
leaq 8(%rax,%rcx), %rax
cmovneq %r15, %rax
movl $2298949, %esi ## imm = 0x231445
movq %r12, %rdi
movq %r14,
2016 Dec 07
1
Expected constant simplification not happening
Hello
Has there been any progress on this topic ? The 3.9 optimizer output is
still the same as I just looked.
https://llvm.org/bugs/show_bug.cgi?id=24448
Ciao
Nat!
Sanjay Patel schrieb:
> [cc'ing Zia]
>
> We have this transform with -Os for some cases after:
> http://reviews.llvm.org/rL244601
> http://reviews.llvm.org/D11363
>
> but something in this example is
2013 Jul 25
2
[LLVMdev] Clang/LLVM 3.3 unwanted attributes being added: NoFramePointerElim
Since updating to LLVM 3.3, the system is generating attributes such as:
attributes #0 = { nounwind "less-precise-fpmad"="false"
"no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true"
"no-infs-fp-math"="false" "no-nans-fp-math"="false"
"unsafe-fp-math"="false"
2015 May 21
2
[LLVMdev] How can I remove these redundant copy between registers?
Hi,
I've been working on a Blackfin backend (llvm-3.6.0) based on the previous
one that was removed in llvm-3.1.
llc generates codes like this:
29 p1 = r2;
30 r5 = [p1];
31 p1 = r2;
32 r6 = [p1 + 4];
33 r5 = r6 + r5;
34 r6 = [p0 + -4];
35 r5 *= r6;
36 p1 = r2;
37 r6 = [p1 + 8];
38 p1 = r2;
p1 and r2 are in different register classes.
A p*
2015 May 15
3
[LLVMdev] RFC: ThinLTO Impementation Plan
On Fri, May 15, 2015 at 9:53 AM, Teresa Johnson <tejohnson at google.com>
wrote:
> On Fri, May 15, 2015 at 9:20 AM, David Blaikie <dblaikie at gmail.com> wrote:
> >
> >
> > On Fri, May 15, 2015 at 9:18 AM, David Blaikie <dblaikie at gmail.com>
> wrote:
> >>>
> >>>
> >>> >> - Marking of imported functions (for use
2013 Dec 16
0
[LLVMdev] Add call printf instructions problems
Hi Jin,
It's difficult to say just from looking at a pass, but one thing looked odd:
> CallInst *call_print = CallInst::Create(call_print,paramArrayRef,"",ins_temp);
This looks very dodgy. The "call_print" being used as an argument is
the (uninitialised) one that's just been declared. This could be the
source of the assertion failure (though a segfault is just as
2016 Sep 20
4
LLVM v3.9.0 and math built-ins
Hi Mehdi,
The ISO C specification does permit the math functions to modify ‘errno’, but I thought that the ‘-fno-math-errno’ option was to tell the optimiser to assume that ‘errno’ is not modified by the math functions. Explicitly providing ‘-fno-math-errno’ is not restoring the elision optimisation that was performed by LLVM v3.8, and this is really only a driver option, with ‘-fmath-errno’
2013 Mar 25
3
[LLVMdev] llvm2cpp attributes handling
Hi everyone,
We are using the llvm2cpp feature of LLVM in the VMKit project and there
are some issues that I would like to point out.
I made a tiny reproducible example here, to be clear:
echo "int main() { return 0; };" > test.c && clang test.c -emit-llvm -c
-o - | llc -march=cpp -cppgen=function -cppfor=main -o -
This command is supposed to generate the C++ code to
2017 Oct 25
3
LLVM v6.0 Internalize and GlobalDCE PASS can not work together?
Hi LLVM developers,
$ cat hello.c
#include <stdio.h>
void foo() {
}
int main(int argc, char *argv[]) {
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
return 0;
}
$ /opt/llvm-svn/bin/clang --version
Fedora clang version 6.0.0 (trunk 316308) (based on LLVM 6.0.0svn)
Target: x86_64-redhat-linux
Thread model: posix
InstalledDir: /opt/llvm-svn/bin
$
2017 May 02
4
[ARM/Thumb] Make a function in arm while in Thumb triple
Hi,
I wanted to know if it was possible to force ARM backend to compile a
function in ARM while the rest is in Thumb mode.
I tried the attributes which is used in GCC but it doesn't work.
Here is what I tried:
https://pastebin.com/jCr5LPUY
Thanks in advance,
Uvekilledkenny
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2013 Sep 03
2
[LLVMdev] AttributeSet from Modules
Hello!
clang defines some AttributeSet, for example:
attributes #0 = { nounwind uwtable "less-precise-fpmad"="false"
"no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true"
"no-infs-fp-math"="false" "no-nans-fp-math"="false"
"unsafe-fp-math"="false"
2015 Oct 11
2
How to add NOP?
Can you send the IR you are using?
Volkan
On Thu, Oct 8, 2015 at 6:28 AM Erdem Derebaşoğlu <
erdemderebasoglu at hotmail.com> wrote:
> Thanks. I enabled my pass. I have one resolved issue though:
> MachineMemOperand::getAddrSpace() always returns zero. How can I use it to
> distinguish private memory accesses?
>
> Erdem
>
> ------------------------------
> From:
2013 Dec 16
3
[LLVMdev] Add call printf instructions problems
Hello, everyone!
I want to write a pass which can insert a call "printf" instructions
before every instruction in the LLVM IR. here is what I wrote:
namespace {
class call_print : public FunctionPass{
private:
DenseMap<const Value*, int> inst_map;
public:
static char ID;
call_print() : FunctionPass(ID){}
//define a extern function "printf"
static llvm::Function*
2017 May 02
2
LLVM module attributes question
I'm trying to find a way to get/set the module attributes as printed in a
module dump:
attributes #0 = { noinline nounwind uwtable
"correctly-rounded-divide-sqrt-fp-math"="false"
"disable-tail-calls"="false" "less-precise-fpmad"="false"
"no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"
2016 Nov 25
2
Translation of custom attribute (defined for variables) from clang to llvm
Hi All,
I need your guidance about a custom attribute. I have defined one for
variables. It is accepted in the source code (without any warnings from
clang), for example in following snippet.
#define NEWATTR __attribute__((moviAttr(1)))
int main()
{
NEWATTR volatile unsigned int a = 5;
volatile unsigned int *p;
p = &a;
return (a+*p);
}
and actually when I Dump the declaration, after