This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: x86-64, I definitely can't make sense out of that



On Feb 4, 2006, at 7:06 AM, Andrew Pinski wrote:
signs_all[4] = { !(sx > 0), !(sy > 0), !(sz > 0), 0 },


C++ front-end produces:
<<cleanup_point   const int signs_all[4] = {0};>>;
<<cleanup_point signs_all[0] = (int) sx <= 0 >>>;
<<< Unknown tree: expr_stmt  signs_all[1] = (int) sy <= 0 >>>;
<<< Unknown tree: expr_stmt  signs_all[2] = (int) sz <= 0 >>>;

While the C front-end is producing:
const int signs_all[4] = {(int) sx <= 0, (int) sy <= 0, (int) sz <= 0, 0};


Dale Johannesen and I came up with a patch to the C++ front-end
for this except it did not work with some C++ cases.

Yes, we had it in Apple's branch for a while and had to back it out. The place to look is split_nonconstant_init in cp/typeck2.c if you want to try. The tricky part is making sure the entire object is initialized in all cases when only a partial initializer is specified.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]