blob: 2b7a307deec9a5f2212632f1de74b11b6394b361 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O1 -fharden-conditional-branches" } */
/* This is a slightly simplified version of
gcc.target/s390/vector/long-double-asm-earlyclobber.c. On x86, the f
constraints in asm statements imposes some requirements that the testcase
doesn't meet. What's unusual is that -fharden-conditional-branches extends
the effects of the malformed asm onto a different basic blocks, which
reg-stack did not expect. */
#include <assert.h>
#include <stdint.h>
void
f (void)
{
long double res, x = 0;
asm("" : "=f"(res) /* { dg-error "must specify a single register" } */
: "0"(x));
assert (res == x);
}
void
g (void)
{
long double res, x = 0;
asm("" : "=g"(res) /* this is ok. */
: "0"(x));
assert (res == x);
}