search for: structb

Displaying 11 results from an estimated 11 matches for "structb".

Did you mean: structs
2012 Feb 07
3
[LLVMdev] Invalid bitcode signature
...ry, I was being an idiot and was trying to link the wrong file type. Sigh. Now I have a problem where I merge two modules each containing the same struct, one opaque and one defined, and it's not merging the two consistently. I have two, let's say %"StructA" = type opaque %"StructB" = type opaque in one module, and in the other: %"StructA" = type { i8 } %"StructB" = type { [0 x i8] } and when I link the two modules, only one is correctly defined: %"StructA" = { i8 } %"StructB" = type opaque %"StructB.0" = { [0 x i8]...
2012 Feb 07
0
[LLVMdev] Invalid bitcode signature
...ying to link the wrong file type. Sigh. > > Now I have a problem where I merge two modules each containing the same > struct, one opaque and one defined, and it's not merging the two > consistently. I have two, let's say > > %"StructA" = type opaque > %"StructB" = type opaque > > in one module, and in the other: > > %"StructA" = type { i8 } > %"StructB" = type { [0 x i8] } > > and when I link the two modules, only one is correctly defined: > > %"StructA" = { i8 } > %"StructB"...
2012 Feb 04
2
[LLVMdev] Invalid bitcode signature
Bill Wendling-3 wrote: > > The error is coming from the bit-code reader. Make sure that you generated > the file with '-emit-llvm' (i.e., it's not an object file) and that it's > the binary version of the bit-code file, not the text version. > > And, llvm-gcc? really? :-) > > Is there no way that the API can generate valid bitcode? And no, not really
2012 Feb 04
0
[LLVMdev] Invalid bitcode signature
Hi Fraser, On 04/02/12 12:09, Fraser Cormack wrote: > > > Bill Wendling-3 wrote: >> >> The error is coming from the bit-code reader. Make sure that you generated >> the file with '-emit-llvm' (i.e., it's not an object file) and that it's >> the binary version of the bit-code file, not the text version. >> >> And, llvm-gcc? really? :-)
2013 Feb 16
2
[LLVMdev] [PATCH] Vectorizing Global Structures - Take 2
...100]) could be an access to structS::A, structS::B, or some other random type. > Note that your TBAA DAG below does not take this into account. Yes, indeed I forgot int (*)[]. I admit my DAG was not complete you would also have to have int (*[]), void*, char* - and I am sure I forgot some more (structB::int*, structB::char*, stuctA::structB::int*, etc) - pointing to structS::A. Say you have *&S.A[0] = val; // The front-end knows you have a structS::A access. int *ptr2 = *ptr; // The front knows that you have a int(*)[] access. The front-end would generate store sa, val, !tbaa &q...
2013 Feb 17
0
[LLVMdev] [PATCH] Vectorizing Global Structures - Take 2
...S::A, > structS::B, or some other random type. > > Note that your TBAA DAG below does not take this into account. > > > Yes, indeed I forgot int (*)[]. I admit my DAG was not complete you would > also have to have int (*[]), void*, char* - and I am sure I forgot some more > (structB::int*, structB::char*, stuctA::structB::int*, etc) - pointing to > structS::A. > > Say you have > > *&S.A[0] = val; // The front-end knows you have a structS::A access. > int *ptr2 = *ptr; // The front knows that you have a int(*)[] access. > > > The front-end...
2017 Jan 25
4
RFC: Emitting empty invariant group for vtable loads
...void(%struct.A*)** %vtable tail call > void%1(%struct.A* nonnull %a) ret void}!7= !{!"_ZTS1A"} > > This works well if the pointer type doesn’t change, but when it > does, devirtualization might not happen like here: > > structA { A();virtualvoidfoo();};structB : > A{ B();virtualvoidfoo();};voidg(A& > a){ a.foo(); a.foo();}voidclobber(A&);voidf() { B > b; clobber(b); g(b);} > > The other problem is that when we combine 2 instructions with > different invariant.group metadata, then we pick one...
2017 Jan 20
4
RFC: Emitting empty invariant group for vtable loads
Hi all, I would like to propose a new way clang would decorate vtable loads in order to handle devirtualization better. I've added *llvm-dev* also, because this can start a discussion about changing invariant.group to just invariant. PDF version of this RFC can be found here: https://drive.google.com/file/d/0B72TmzNsY6Z8ZmpOUnB5dDZfSFU/view?usp=sharing Background: Initial old design:
2017 Jan 31
0
[cfe-dev] RFC: Emitting empty invariant group for vtable loads
..."} >>> >>> This works well if the pointer type doesn’t change, >>> but when it does, devirtualization might not happen >>> like here: >>> >>> structA { A();virtualvoidfoo();};structB : >>> A{ B();virtualvoidfoo();};voidg(A& >>> a){ a.foo(); a.foo();}voidclobber(A&);voidf() >>> { B b; clobber(b); g(b);} >>> >>> The other problem is that when we c...
2017 Jan 26
2
[cfe-dev] RFC: Emitting empty invariant group for vtable loads
2017-01-26 3:28 GMT+01:00 Richard Smith <richard at metafoo.co.uk>: > On 25 January 2017 at 15:03, Hal Finkel via cfe-dev < > cfe-dev at lists.llvm.org> wrote: > >> Hi Piotr, >> >> I think makes sense. Modulo bitcasts, the invariant is identified by a >> particular pointer SSA value. Given that you can't sensibly have two >> nonequivalent
2017 Jan 28
2
[cfe-dev] RFC: Emitting empty invariant group for vtable loads
2017-01-26 15:41 GMT+01:00 Hal Finkel <hfinkel at anl.gov>: > > On 01/26/2017 06:44 AM, Piotr Padlewski wrote: > > > > 2017-01-26 3:28 GMT+01:00 Richard Smith <richard at metafoo.co.uk>: > >> On 25 January 2017 at 15:03, Hal Finkel via cfe-dev < >> cfe-dev at lists.llvm.org> wrote: >> >>> Hi Piotr, >>> >>> I think