diff options
| -rw-r--r-- | memops.c | 2 | ||||
| -rw-r--r-- | validation/mem2reg/address-used00.c | 1 | ||||
| -rw-r--r-- | validation/optim/address-used01.c | 19 |
3 files changed, 21 insertions, 1 deletions
@@ -69,6 +69,8 @@ static int address_taken(pseudo_t pseudo) struct instruction *insn = pu->insn; if (insn->bb && (insn->opcode != OP_LOAD && insn->opcode != OP_STORE)) return 1; + if (pu->userp != &insn->src) + return 1; } END_FOR_EACH_PTR(pu); return 0; } diff --git a/validation/mem2reg/address-used00.c b/validation/mem2reg/address-used00.c index f2d6c87b..1501bc1c 100644 --- a/validation/mem2reg/address-used00.c +++ b/validation/mem2reg/address-used00.c @@ -13,7 +13,6 @@ int foo(int **g, int j) /* * check-name: address-used00 * check-command: test-linearize -Wno-decl -fdump-ir=final $file - * check-known-to-fail * check-output-ignore * check-output-excludes: ret\\..* \\$1 */ diff --git a/validation/optim/address-used01.c b/validation/optim/address-used01.c new file mode 100644 index 00000000..6ca75ffe --- /dev/null +++ b/validation/optim/address-used01.c @@ -0,0 +1,19 @@ +int foo(int **g, int j) +{ + int i = 1; + int *a; + int **p; + + a = &i; + p = &a; + *p[0] = 0; + return i; +} + +/* + * check-name: address-used01 + * check-command: test-linearize -Wno-decl -fdump-ir=final $file + * check-known-to-fail + * check-output-ignore + * check-output-contains: ret\\..* \\$0 + */ |
