g ++优化器和超薄商店

时间:2016-10-07 03:45:43

标签: c++ compiler-optimization

我有以下由4.8.3编译的c ++源代码测试:

void setCanceling( const char* OrderNoptr ){
    if( strcmp( BuyBook.OrderNo,OrderNoptr ) == 0 ){
        BuyBook.seqno++ ;
        asm volatile("":::"memory") ;
        BuyBook.Canceling = 1 ;
        asm volatile("":::"memory") ;
        BuyBook.seqno++ ;
    }
}

我不希望编译器优化器将源修改为:

void setCanceling( const char* OrderNoptr ){
    register int r = BuyBook.seqno ;  
    if( strcmp( BuyBook.OrderNo,OrderNoptr ) == 0 ){
        BuyBook.Canceling = 1 ;
        r += 2 ;
    }
    BuyBook.seqno = r ;
}

可能asm volatile(“”:::“memory”)可以阻止编译器在我的测试中进行这样的修改吗?

0 个答案:

没有答案