merge from gcc
merge from gcc