No, std::vector implementation must make sure its elements stored in contiguous 
memory.
Seems c++98 standard missed this, but in c++03 standard, it's already clearly 
stated. There are many posts on stackoverflow.com talking about this.
Nanhai's suggestion is good. Although we immediately assign value to those 
GenRegister,
It is still good to make GenRegister initialized.

Thanks!
Ruiling

-----Original Message-----
From: Lv, Meng 
Sent: Friday, August 08, 2014 8:58 AM
To: Zou, Nanhai; Song, Ruiling; [email protected]
Subject: RE: [Beignet] [PATCH] [PATCH]Fix compile errors for CLANG compiler

HI, the vector would also have problem, in the following function 
"sel.READ64(tmpAddr, dst, valueNum, bti.bti[0]);", we need pass down the data 
pointer "dst" to READ64 function. The data in vector may  not be continuous. 
,
-----Original Message-----
From: Zou, Nanhai 
Sent: Thursday, August 07, 2014 3:59 PM
To: Zou, Nanhai; Song, Ruiling; Lv, Meng; [email protected]
Cc: Lv, Meng
Subject: RE: [Beignet] [PATCH] [PATCH]Fix compile errors for CLANG compiler

The previous patch was wrong.
With static_cast,  constructor of each elements in dst was bypassed.
 
This will leave random initial value in GenRegister.
So please use std::vector

Thanks
Zou Nanhai

-----Original Message-----
From: Beignet [mailto:[email protected]] On Behalf Of Zou, 
Nanhai
Sent: Thursday, August 07, 2014 3:40 PM
To: Song, Ruiling; Lv, Meng; [email protected]
Cc: Lv, Meng
Subject: Re: [Beignet] [PATCH] [PATCH]Fix compile errors for CLANG compiler

Replace those with something like 
vector<GenRegister> dst[valueNum];
would be better.

Thanks
Zou Nanhai

-----Original Message-----
From: Beignet [mailto:[email protected]] On Behalf Of Song, 
Ruiling
Sent: Thursday, August 07, 2014 3:30 PM
To: Lv, Meng; [email protected]
Cc: Lv, Meng
Subject: Re: [Beignet] [PATCH] [PATCH]Fix compile errors for CLANG compiler

The patch LGTM.

Ruiling
-----Original Message-----
From: Beignet [mailto:[email protected]] On Behalf Of Lv 
Meng
Sent: Wednesday, August 06, 2014 10:31 AM
To: [email protected]
Cc: Lv, Meng
Subject: [Beignet] [PATCH] [PATCH]Fix compile errors for CLANG compiler

this patch would fix variable length array of non-POD element type error for 
CLANG compiler.
Signed-off-by: Lv Meng <[email protected]>
---
 backend/src/backend/gen_insn_selection.cpp | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/backend/src/backend/gen_insn_selection.cpp 
b/backend/src/backend/gen_insn_selection.cpp
index 090f897..39f5141 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -2799,7 +2799,7 @@ namespace gbe
       /* XXX support scalar only right now. */
       GBE_ASSERT(valueNum == 1);
       GBE_ASSERT(bti.count == 1);
-      GenRegister dst[valueNum];
+      GenRegister *dst = static_cast<GenRegister 
+ *>(alloca(sizeof(GenRegister) * valueNum));
       GenRegister tmpAddr = getRelativeAddress(sel, addr, 
insn.getAddressSpace(), bti.bti[0]);
       for ( uint32_t dstID = 0; dstID < valueNum; ++dstID)
         dst[dstID] = sel.selReg(insn.getValue(dstID), ir::TYPE_U64); @@ 
-2999,7 +2999,7 @@ namespace gbe
       /* XXX support scalar only right now. */
       GBE_ASSERT(valueNum == 1);
       addr = GenRegister::retype(addr, GEN_TYPE_UD);
-      GenRegister src[valueNum];
+      GenRegister *src = static_cast<GenRegister 
+ *>(alloca(sizeof(GenRegister) * valueNum));
 
       for (uint32_t valueID = 0; valueID < valueNum; ++valueID)
         src[valueID] = sel.selReg(insn.getValue(valueID), ir::TYPE_U64); @@ 
-3710,11 +3710,10 @@ namespace gbe
     {
       using namespace ir;
       GenRegister msgPayloads[4];
-      GenRegister dst[insn.getDstNum()];
       uint32_t srcNum = insn.getSrcNum();
       uint32_t valueID = 0;
       uint32_t msgLen = 0;
-
+      GenRegister *dst = static_cast<GenRegister 
+ *>(alloca(sizeof(GenRegister) * insn.getDstNum()));
       for (valueID = 0; valueID < insn.getDstNum(); ++valueID)
         dst[valueID] = sel.selReg(insn.getDst(valueID), insn.getDstType());
 
--
1.8.3.2

_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to