13883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
23883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
33883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
43883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct DWstruct {
53883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  char high, low;
63883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher};
73883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
83883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophertypedef union {
93883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  struct DWstruct s;
103883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  short ll;
113883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} DWunion;
123883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
133883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophershort __udivmodhi4 (char n1, char bm) {
143883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  DWunion rr;
153883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
163883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  if (bm == 0)
173883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher    {
183883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher      rr.s.high = n1;
193883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher    }
203883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  else
213883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher    {
223883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher      rr.s.high = bm;
233883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher    }
243883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
253883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return rr.ll;
263883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
27