| // { dg-do compile } |
| // { dg-additional-options "-Wno-return-type" } |
| // { dg-additional-options "-mcpu=970 -maltivec" { target powerpc*-*-* } } |
| |
| typedef union { |
| long int asBits; |
| } jsval_layout; |
| static jsval_layout STRING_TO_JSVAL_IMPL() {} |
| |
| typedef __attribute__ ((aligned(sizeof (long int)))) long int jsval; |
| class Value { |
| public: |
| void setString() { |
| data = STRING_TO_JSVAL_IMPL(); |
| } |
| jsval_layout data; |
| } __attribute__ ((aligned(8))); |
| |
| static Value StringValue() |
| { |
| Value v; |
| v.setString(); |
| return v; |
| } |
| |
| static const jsval & Jsvalify(const Value & v) |
| { |
| return (const jsval &)v; |
| } |
| |
| static Value *Valueify(jsval *v) |
| { |
| return (Value *) v; |
| } |
| |
| struct JSObject { |
| void getQNameLocalName(); |
| }; |
| static Value IdToValue(int id) |
| { |
| if (id) |
| return StringValue(); |
| } |
| |
| static jsval IdToJsval(int id) |
| { |
| return Jsvalify(IdToValue(id)); |
| } |
| |
| class AutoGCRooter; |
| struct JSContext { |
| AutoGCRooter *autoGCRooters; |
| }; |
| class AutoGCRooter { |
| public: |
| AutoGCRooter(JSContext *cx) {} |
| }; |
| class AutoArrayRooter:AutoGCRooter { |
| public: |
| AutoArrayRooter(JSContext *cx, Value *vec):AutoGCRooter(cx) |
| { |
| array = vec; |
| cx->autoGCRooters = this; |
| } |
| Value *array; |
| }; |
| |
| static void PutProperty(JSContext *cx, int id, jsval *vp) |
| { |
| JSObject *nameobj; |
| jsval roots[3]; |
| roots[1] = IdToJsval(id); |
| roots[2] = *vp; |
| AutoArrayRooter tvr(cx, Valueify(roots)); |
| nameobj->getQNameLocalName(); |
| } |
| |
| void xml_defineProperty(JSContext *cx, int id, const Value *v) |
| { |
| jsval tmp = Jsvalify(*v); |
| PutProperty(cx, id, &tmp); |
| } |