Debugging this took forever as I only looked at constructors in ir.cpp
to find who wasn't setting up ->type. I dislike hiding code (as
opposed to prototypes and definitions) in C++ header files, but in
this case I have only myself to blame.
type = glsl_type::get_instance(val->type->base_type, mask.num_components, 1);
}
+ir_swizzle::ir_swizzle(ir_rvalue *val, ir_swizzle_mask mask)
+{
+ this->val = val;
+ this->mask = mask;
+ this->type = glsl_type::get_instance(val->type->base_type,
+ mask.num_components, 1);
+}
+
#define X 1
#define R 5
#define S 9
public:
ir_swizzle(ir_rvalue *, unsigned x, unsigned y, unsigned z, unsigned w,
unsigned count);
- ir_swizzle(ir_rvalue *val, ir_swizzle_mask mask)
- : val(val), mask(mask)
- {
- /* empty */
- }
+ ir_swizzle(ir_rvalue *val, ir_swizzle_mask mask);
virtual ir_swizzle *as_swizzle()
{