Displaying 20 results from an estimated 4000 matches similar to: "why clang compile local to global"
2016 Dec 28
0
why clang compile local to global
> On Dec 27, 2016, at 11:09 PM, liuyu11 at ict.ac.cn via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hello,everyone:
> I want to known how to let clang compile my local array to local variables:
> I have the code :
> int main()
> {
> int a[3]={1,2,3};
>
> int b=7;
> int c=8;
> int d=9;
> int e=10;
> int f=11;
>
2019 Jul 24
2
Intrinsics InstrReadMem memory properties
Ok, now I think I've found a bug:
Consider this C code:
void bar(int b) {
int a[10];
memset(a, b, 10);
}
which generates this IR code:
define dso_local void @bar(i32 %b) #0 {
entry:
%b.addr = alloca i32, align 4
%a = alloca [10 x i32], align 16
store i32 %b, i32* %b.addr, align 4
%arraydecay = getelementptr inbounds [10 x i32], [10 x i32]* %a, i64 0,
i64 0
%0 = bitcast i32*
2017 Nov 08
5
Is it ok to allocate > half of address space?
Hi,
I was looking into the semantics of GEP inbounds and some BasicAA
rules and I'm wondering if it's valid in LLVM IR to allocate more than
half of the address space with a global variable or an alloca.
If that's a scenario want to consider, then we have problems :)
Consider this C code (32 bits):
#include <string.h>
char obj[0x80000008];
char f() {
char *p = obj +
2017 Nov 08
2
Is it ok to allocate > half of address space?
Many thanks for the pointer! I missed that bug report since the title
was about GVN.
If there's interest in supporting this feature I can help since we've
formalized most of BasicAA. I can easily verify if proposed changes
are correct. (I'll release the code soon).
Nuno
Quoting Björn Pettersson A <bjorn.a.pettersson at ericsson.com>:
> Hi Nuno.
> I can't
2018 Nov 23
2
is this a bug in an optimization pass?
The frontend code is a pretty simple for loop, that counts from i = 0;
i != 10; i += 1
It gets optimized into and endless loop.
export fn entry() void {
var array: [10]Bar = undefined;
var x = for (array) |elem, i| {
if (i == 1) break elem;
} else bar2();
}
Here's the generated IR:
; ModuleID = 'test'
source_filename = "test"
target datalayout =
2012 Jan 23
2
[LLVMdev] Possible bug in the dragonegg
Hi Duncan,
>> #include<stdio.h>
>> #include<string.h>
>>
>> int main(int argc, char** argv){
>>
>> char a[8] = "aaaaaaa";
>> char b[8] = "bbbbbbb";
>>
>> char *c = (char*) malloc(sizeof(char)*(strlen(a)+strlen(b)+1));
>> memcpy(c, a, strlen(a));
>> memcpy(c + strlen(a), b, strlen(b) + 1);
>>
2012 Jan 24
0
[LLVMdev] Possible bug in the dragonegg
Hi Pablo, I can reproduce this with the supplied IR. It is related to the use
of __memcpy_chk. As far as I can see it is a bug in lli or the LLVM code
generators. Can you please open a bugreport, attaching the LLVM IR.
Ciao, Duncan.
On 23/01/12 17:00, Pablo Barrio wrote:
> Hi Duncan,
>>> #include<stdio.h>
>>> #include<string.h>
>>>
>>> int
2017 Oct 01
2
load with alignment of 1 crashes from being unaligned
Below is attached a full IR module that can reproduce this issue, but the
part to notice is this:
%Foo96Bits = type <{ i24, i24, i24, i24 }>
define internal fastcc i16 @main.0.1() unnamed_addr #2 !dbg !113 {
Entry:
%value = alloca %Foo96Bits, align 1
%b = alloca i24, align 4
%0 = bitcast %Foo96Bits* %value to i8*, !dbg !129
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* bitcast
2018 May 19
2
tbaa error: Access type node must be a valid scalar type
Hi
I am upgrading my clang fork from 5.0 to 6.0 and I am hit by this error:
Access type node must be a valid scalar type
%4 = load %"struct.Foo::p.test1::"*, %"struct.Foo::p.test1::"**
%_param.addr, align 8, !tbaa !16
!16 = !{!15, !15, i64 0}
!15 = !{!"p.test1::", !13, i64 0, !13, i64 8}
It looks like !16 is referencing !15, which is a struct. !13 is
!13 =
2016 Nov 10
3
array fill idioms
Yes, I know this works peachy keen for char arrays. I'm looking at (which is
hard to express in C) something like
void foo () {
int bar[20] = { 42, 42, ..., 42 };
}
I don't want to do a memcopy of the 20 element constant array, and memset
doesn't work here. I want an intrinsic that copys the scalar int constant 42
to each element of the int array.
bagel
On 11/10/2016 03:30
2012 Aug 20
3
[LLVMdev] Problem with "Does not dominate all uses"
Hi!
I'm having some trouble with a pass I'm writing.
I'm using DemotePHIToStack to remove all phi node in my code with this code (this is the first thing I do in my pass):
// Erase phi node
vector<PHINode*> phis;
for (Function::iterator i=f->begin();i!=f->end();++i) {
for(BasicBlock::iterator b=i->begin();b!=i->end();++b) {
2015 Mar 01
2
[LLVMdev] RFC: PerfGuide for frontend authors
> On Mar 1, 2015, at 7:53 AM, Björn Steinbrink <bsteinbr at gmail.com> wrote:
>
> On 2015.02.28 18:17:27 -0800, Philip Reames wrote:
>>> On Feb 28, 2015, at 3:01 PM, Björn Steinbrink <bsteinbr at gmail.com> wrote:
>>> 2015-02-28 23:50 GMT+01:00 Philip Reames <listmail at philipreames.com>:
>>>>>> On Feb 28, 2015, at 2:30 PM, Björn
2015 Mar 01
2
[LLVMdev] RFC: PerfGuide for frontend authors
> On Feb 28, 2015, at 3:01 PM, Björn Steinbrink <bsteinbr at gmail.com> wrote:
>
> [This time without dropping the list, sorry]
>
> 2015-02-28 23:50 GMT+01:00 Philip Reames <listmail at philipreames.com>:
>
>>>> On Feb 28, 2015, at 2:30 PM, Björn Steinbrink <bsteinbr at gmail.com> wrote:
>>>>
>>>>> On 2015.02.28
2012 Aug 20
0
[LLVMdev] Problem with "Does not dominate all uses"
In your original file, %6 is defined in if.end11 and is used in cond.end. if.end11 branches to cond.true and cond.false, both of which branch unconditionally to cond.end. Therefore %6 dominates its use.
In your second file %18 is defined in end.11 and used in cond.end. However, end.11 no longer dominates cond.end because you have rewritten all branches to go through the switch statement in
2015 Feb 28
0
[LLVMdev] RFC: PerfGuide for frontend authors
[This time without dropping the list, sorry]
2015-02-28 23:50 GMT+01:00 Philip Reames <listmail at philipreames.com>:
>> On Feb 28, 2015, at 2:30 PM, Björn Steinbrink <bsteinbr at gmail.com> wrote:
>>
>>> On 2015.02.28 14:23:02 -0800, Philip Reames wrote:
>>>> On 02/28/2015 10:04 AM, Björn Steinbrink wrote:
>>>> Hi,
>>>>
2012 Mar 12
2
[LLVMdev] LLI Segfaulting
Hi,
I've been stuck with this problem for a while now, and my supervisor's
starting to think it's a bug in lli, but I thought I'd ask here before going
down that route. I have this code, which stores an array in my 'MainClass',
and prints out an element of it.
Note that the print statement is irrelevant here, it segfaults regardless,
and this code has been run with -O2
2019 Jul 25
2
Intrinsics InstrReadMem memory properties
So I removed the 'tail' from the call and try out different properties:
- IntrNoMem: memset() and the intrinsic are both optimized away as expected
- IntrWriteMem: memset() optimized away by DSE but the intrinsic isn't. I
would expect both to be removed, since the intrinsic is now also a dead
store.
- IntrReadMem: memset() and the intrinsic are both optimized away
*unexpectedly* (CSE
2015 Feb 28
2
[LLVMdev] RFC: PerfGuide for frontend authors
> On Feb 28, 2015, at 2:30 PM, Björn Steinbrink <bsteinbr at gmail.com> wrote:
>
>> On 2015.02.28 14:23:02 -0800, Philip Reames wrote:
>>> On 02/28/2015 10:04 AM, Björn Steinbrink wrote:
>>> Hi,
>>>
>>>> On 2015.02.28 10:53:35 -0600, Hal Finkel wrote:
>>>> ----- Original Message -----
>>>>> From: "Philip
2019 Jul 24
2
Intrinsics InstrReadMem memory properties
Hi Johannes,
Thanks for your reply. I now see more clearly how things work with these
properties. However, what would be an object whose address is potentially
known by a callee? I suppose the intrinsic arguments and global variable?
So IIUC, if not restricted by *only properties, an intrinsic could access
to:
- only its arguments if IntrArgMemOnly specified,
- its arguments and the global
2015 Feb 28
0
[LLVMdev] RFC: PerfGuide for frontend authors
On 2015.02.28 14:23:02 -0800, Philip Reames wrote:
> On 02/28/2015 10:04 AM, Björn Steinbrink wrote:
> >Hi,
> >
> >On 2015.02.28 10:53:35 -0600, Hal Finkel wrote:
> >>----- Original Message -----
> >>>From: "Philip Reames" <listmail at philipreames.com>
> >>>>6. Use the lifetime.start/lifetime.end and
>