[Beignet] beignet doesnt compile with LLVM 3.6

Paulo Dias paulo.miguel.dias at gmail.com
Fri Oct 31 06:30:58 PDT 2014


On Fri, Oct 31, 2014 at 1:05 AM, Yang, Rong R <rong.r.yang at intel.com> wrote:

>  HI, Paulo,
>
>
>
> Nice to meet you:)
>
> Do you use LLVM 3.6 to compile the Beignet’s C/C++ code?
>
> Sorry, I mistake that you only use LLVM 3.6 as Beignet’s OpenCL language
> compiler.
>


That is correct, im trying to create ubuntu packages for beignet with
latest mesa git + llvm 3.6, and like i reported, im getting compilations
errors because of the new stricter c11 rules that llvm started to enforce
(at least i think thats the cause of the miss compilation)



> I have quick look these compilation. For strict-aliasing warning, I think
> it is the clang’s issue.
>
> Because in beignet/backend/src/backend/program.cpp:59 only include the
> file CodeGenAction.h, and the all warnings are in clang internal.
>
>
>
> MB conflict with LLV, I will fix it.
>
>
>
> And convert ‘std::unique_ptr<llvm::Module>’ to ‘llvm::Module*’ error, it
> is caused by using LLVM 3.6 as Beignet’s OpenCL language compiler, because
> LLVM 3.6 haven’t officially released, Beignet don’t support it now.
>
>
>

I know its beyond your scope but could you send me a patch with fixes that
allows me to cleanly compile beignet under llvm 3.6? radeon opencl uses
llvm too and i caught several missbehaviours when using both opencl
implementations that would be nice to report, once i get a working system
running.



>  Thanks,
>
> Yang, Rong
>

best regards


>
>
> *From:* Paulo Dias [mailto:paulo.miguel.dias at gmail.com]
> *Sent:* Thursday, October 30, 2014 10:49
> *To:* Yang, Rong R
> *Cc:* beignet at lists.freedesktop.org; junyan.he at linux.intel.com
> *Subject:* Re: beignet doesnt compile with LLVM 3.6
>
>
>
> Hi Yang, nice to meet you.
>
>
>
> I agree with LLVM changing code from the development branch, but in this
> case, the compilation is failing because they switched to a stricter
> language convention, so it might be wiser to fix the code sooner then later.
>
>
>
> Im also creating beignet packages for future inclusion in ubuntu (im just
> a community contributor, not a canonical employee), and ive been testing
> beignet + opencl (mesa) for radeon and intel drivers. So it would help me
> alot if you guys could fix this compilation, since i have a few bugs i want
> to commit to you guys but i need to test latest mesa, intel, radeon code.
>
>
>
> Best regards
>
>
>  | Paulo Dias
>
> | paulo.miguel.dias at gmail.com
>
> *Tempora mutantur, nos et mutamur in illis.*
>
>
>
> On Thu, Oct 30, 2014 at 12:22 AM, Yang, Rong R <rong.r.yang at intel.com>
> wrote:
>
>  Because LLVM change the head file frequently, Beignet only support the
> released version LLVM, from 3.3 to 3.5. You can get this information from
> Beignet wiki: http://www.freedesktop.org/wiki/Software/Beignet/.
>
>
>
> For any beignet question, you can send to the mailing list,
> beignet at lists.freedesktop.org, and send bug reports to
> https://bugs.freedesktop.org/enter_bug.cgi?product=Beignet.
>
>
>
> Thanks,
>
> Yang Rong
>
>
>
> *From:* Paulo Dias [mailto:paulo.miguel.dias at gmail.com]
> *Sent:* Wednesday, October 29, 2014 21:50
> *To:* Yang, Rong R; junyan.he at linux.intel.com
> *Subject:* beignet doesnt compile with LLVM 3.6
>
>
>
> Hi, sorry to bother you.
>
>
>
> I've been trying to compile beignet from git with LLVM 3.6.
>
> Unfortunatelly, with the new LLVM restrictions, beignet fails to compile,
> could you take a look at it?
>
>
>
> BTW, what is the proper way to send bug reports? do you guys have a
> freenode irc channel?
>
>
>
> here is the compilation output:
>
>
>
> ----
>
>
>
> In file included from /usr/lib/llvm-3.6/include/clang/AST/Decl.h:17:0,
>
>                  from
> /usr/lib/llvm-3.6/include/clang/AST/ASTTypeTraits.h:20,
>
>                  from /usr/lib/llvm-3.6/include/clang/AST/ASTContext.h:18,
>
>                  from
> /usr/lib/llvm-3.6/include/clang/Frontend/ASTUnit.h:18,
>
>                  from
> /usr/lib/llvm-3.6/include/clang/Frontend/FrontendAction.h:24,
>
>                  from
> /usr/lib/llvm-3.6/include/clang/CodeGen/CodeGenAction.h:13,
>
>                  from
> /home/groo/devel/intel/beignet/beignet/backend/src/backend/program.cpp:59:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue::APSInt& clang::APValue::getInt()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:202:34: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return *(APSInt*)(char*)Data.buffer;
>
>                                   ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue::APFloat& clang::APValue::getFloat()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:210:35: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return *(APFloat*)(char*)Data.buffer;
>
>                                    ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue::APSInt& clang::APValue::getComplexIntReal()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:218:48: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((ComplexAPSInt*)(char*)Data.buffer)->Real;
>
>                                                 ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue::APSInt& clang::APValue::getComplexIntImag()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:226:48: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((ComplexAPSInt*)(char*)Data.buffer)->Imag;
>
>                                                 ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue::APFloat& clang::APValue::getComplexFloatReal()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:234:49: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((ComplexAPFloat*)(char*)Data.buffer)->Real;
>
>                                                  ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue::APFloat& clang::APValue::getComplexFloatImag()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:242:49: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((ComplexAPFloat*)(char*)Data.buffer)->Imag;
>
>                                                  ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue& clang::APValue::getVectorElt(unsigned int)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:261:38: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((Vec*)(char*)Data.buffer)->Elts[I];
>
>                                       ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘unsigned int clang::APValue::getVectorLength() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:268:51: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const Vec*)(const void *)Data.buffer)->NumElts;
>
>                                                    ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue& clang::APValue::getArrayInitializedElt(unsigned int)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:274:38: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((Arr*)(char*)Data.buffer)->Elts[I];
>
>                                       ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue& clang::APValue::getArrayFiller()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:285:38: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((Arr*)(char*)Data.buffer)->Elts[getArrayInitializedElts()];
>
>                                       ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘unsigned int clang::APValue::getArrayInitializedElts() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:292:51: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const Arr*)(const void *)Data.buffer)->NumElts;
>
>                                                    ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘unsigned int clang::APValue::getArraySize() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:296:51: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const Arr*)(const void *)Data.buffer)->ArrSize;
>
>                                                    ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘unsigned int clang::APValue::getStructNumBases() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:301:57: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const StructData*)(const char*)Data.buffer)->NumBases;
>
>                                                          ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘unsigned int clang::APValue::getStructNumFields() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:305:57: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const StructData*)(const char*)Data.buffer)->NumFields;
>
>                                                          ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue& clang::APValue::getStructBase(unsigned int)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:309:45: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((StructData*)(char*)Data.buffer)->Elts[i];
>
>                                              ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue& clang::APValue::getStructField(unsigned int)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:313:45: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((StructData*)(char*)Data.buffer)->Elts[getStructNumBases() +
> i];
>
>                                              ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘const
> clang::FieldDecl* clang::APValue::getUnionField() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:324:56: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const UnionData*)(const char*)Data.buffer)->Field;
>
>                                                         ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function
> ‘clang::APValue& clang::APValue::getUnionValue()’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:328:45: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return *((UnionData*)(char*)Data.buffer)->Value;
>
>                                              ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘const
> clang::AddrLabelExpr* clang::APValue::getAddrLabelDiffLHS() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:340:64: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const AddrLabelDiffData*)(const char*)Data.buffer)->LHSExpr;
>
>                                                                 ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘const
> clang::AddrLabelExpr* clang::APValue::getAddrLabelDiffRHS() const’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:344:64: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      return ((const AddrLabelDiffData*)(const char*)Data.buffer)->RHSExpr;
>
>                                                                 ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘void
> clang::APValue::setInt(clang::APValue::APSInt)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:349:29: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      *(APSInt *)(char *)Data.buffer = std::move(I);
>
>                              ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘void
> clang::APValue::setFloat(clang::APValue::APFloat)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:353:30: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      *(APFloat *)(char *)Data.buffer = std::move(F);
>
>                               ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘void
> clang::APValue::setVector(const clang::APValue*, unsigned int)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:357:31: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((Vec*)(char*)Data.buffer)->Elts = new APValue[N];
>
>                                ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:358:31: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((Vec*)(char*)Data.buffer)->NumElts = N;
>
>                                ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:360:33: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>        ((Vec*)(char*)Data.buffer)->Elts[i] = E[i];
>
>                                  ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘void
> clang::APValue::setComplexInt(clang::APValue::APSInt,
> clang::APValue::APSInt)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:366:43: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((ComplexAPSInt *)(char *)Data.buffer)->Real = std::move(R);
>
>                                            ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:367:43: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((ComplexAPSInt *)(char *)Data.buffer)->Imag = std::move(I);
>
>                                            ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘void
> clang::APValue::setComplexFloat(clang::APValue::APFloat,
> clang::APValue::APFloat)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:373:44: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((ComplexAPFloat *)(char *)Data.buffer)->Real = std::move(R);
>
>                                             ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:374:44: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((ComplexAPFloat *)(char *)Data.buffer)->Imag = std::move(I);
>
>                                             ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘void
> clang::APValue::setUnion(const clang::FieldDecl*, const clang::APValue&)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:383:37: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((UnionData*)(char*)Data.buffer)->Field = Field;
>
>                                      ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:384:38: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      *((UnionData*)(char*)Data.buffer)->Value = Value;
>
>                                       ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h: In member function ‘void
> clang::APValue::setAddrLabelDiff(const clang::AddrLabelExpr*, const
> clang::AddrLabelExpr*)’:
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:388:45: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((AddrLabelDiffData*)(char*)Data.buffer)->LHSExpr = LHSExpr;
>
>                                              ^
>
> /usr/lib/llvm-3.6/include/clang/AST/APValue.h:389:45: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> [-Wstrict-aliasing]
>
>      ((AddrLabelDiffData*)(char*)Data.buffer)->RHSExpr = RHSExpr;
>
>                                              ^
>
> In file included from
> /home/groo/devel/intel/beignet/beignet/backend/src/./sys/vector.hpp:28:0,
>
>                  from
> /home/groo/devel/intel/beignet/beignet/backend/src/./ir/register.hpp:27,
>
>                  from
> /home/groo/devel/intel/beignet/beignet/backend/src/./ir/instruction.hpp:27,
>
>                  from
> /home/groo/devel/intel/beignet/beignet/backend/src/./backend/context.hpp:23,
>
>                  from
> /home/groo/devel/intel/beignet/beignet/backend/src/backend/program.hpp:29,
>
>                  from
> /home/groo/devel/intel/beignet/beignet/backend/src/backend/program.cpp:26:
>
> /usr/lib/llvm-3.6/include/llvm/Support/SpecialCaseList.h: At global scope:
>
> /home/groo/devel/intel/beignet/beignet/backend/src/./sys/platform.hpp:263:12:
> error: expected ‘,’ or ‘...’ before ‘(’ token
>
>  #define MB (KB*KB)
>
>             ^
>
> /usr/lib/llvm-3.6/include/llvm/Support/SpecialCaseList.h:67:70: note: in
> expansion of macro ‘MB’
>
>    static std::unique_ptr<SpecialCaseList> create(const MemoryBuffer *MB,
>
>                                                                       ^
>
> /home/groo/devel/intel/beignet/beignet/backend/src/./sys/platform.hpp:263:12:
> error: expected ‘,’ or ‘...’ before ‘(’ token
>
>  #define MB (KB*KB)
>
>             ^
>
> /usr/lib/llvm-3.6/include/llvm/Support/SpecialCaseList.h:92:34: note: in
> expansion of macro ‘MB’
>
>    bool parse(const MemoryBuffer *MB, std::string &Error);
>
>                                   ^
>
> /home/groo/devel/intel/beignet/beignet/backend/src/backend/program.cpp: In
> function ‘bool gbe::buildModuleFromSource(const char*, llvm::Module**,
> llvm::LLVMContext*, std::vector<std::basic_string<char> >&, size_t, char*,
> size_t*)’:
>
> /home/groo/devel/intel/beignet/beignet/backend/src/backend/program.cpp:614:44:
> error: cannot convert ‘std::unique_ptr<llvm::Module>’ to ‘llvm::Module*’ in
> initialization
>
>      llvm::Module *module = Act->takeModule();
>
>                                             ^
>
> backend/src/CMakeFiles/gbe.dir/build.make:583: recipe for target
> 'backend/src/CMakeFiles/gbe.dir/backend/program.cpp.o' failed
>
> make[3]: *** [backend/src/CMakeFiles/gbe.dir/backend/program.cpp.o] Error
> 1
>
> ---
>
> best regards
>
>
>
> | Paulo Dias
>
> | paulo.miguel.dias at gmail.com
>
> *Tempora mutantur, nos et mutamur in illis.*
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/beignet/attachments/20141031/a9daa729/attachment-0001.html>


More information about the Beignet mailing list