This should always be signed chars, so use int8_t. This fixes a miscompile when
[llvm/stm8.git] / test / FrontendC++ / 2009-12-23-MissingSext.cpp
blobee978812c29564b648f4e2d7ccc7bf1acc62b00e
1 // RUN: %llvmgxx %s -S -o - | FileCheck %s
2 // The store of p.y into the temporary was not
3 // getting extended to 32 bits, so uninitialized
4 // bits of the temporary were used. 7366161.
5 struct foo {
6 char x:8;
7 signed int y:24;
8 };
9 int bar(struct foo p, int x) {
10 // CHECK: bar
11 // CHECK: sext
12 // CHECK: sext
13 x = (p.y > x ? x : p.y);
14 return x;
15 // CHECK: return